JSON 파일을 지리적 위치와 바인딩하는 Web Components

    Ignite UI for Web Components 사용하면 다양한 파일 형식에서 로드된 지리 데이터를 그릴 수 있습니다. 예를 들어 JSON(JavaScript Object Notation) 파일에서 지리적 위치를 로드할 수 있습니다.

    Web Components Binding JSON Files with Geographic Locations Example

    Data Example

    다음은 JSON 파일의 데이터 예입니다.

    [
       { "name": "Sydney Island", "lat": -16.68972, "lon": 139.45917 },
       { "name": "Sydney Creek",  "lat": -16.3,     "lon": 128.95 },
       { "name": "Mount Sydney",  "lat": -21.39864, "lon": 121.193 },
     // ...
    ]
    

    Code Snippet

    다음 코드는 지도 구성 요소의 IgcGeographicHighDensityScatterSeriesComponent 로드하고 지리적 위치가 포함된 로드된 JSON 파일에서 생성된 객체 배열에 바인딩합니다.

    <igc-geographic-map id="geoMap" width="100%" height="100%">
    
    </igc-geographic-map>
    
    connectedCallback() {
        const url = "../data/WorldCities.json";
    
        fetch(url)
            .then((response) => response.json())
            .then(data => this.onDataLoaded(data));
    }
    
    onDataLoaded(jsonData: any[]) {
        const geoLocations: any[] = [];
        for (const jsonItem of jsonData) {
            if (jsonItem.cap) {
                const location = {
                    latitude: jsonItem.lat,
                    longitude: jsonItem.lon,
                    population: jsonItem.pop,
                    city: jsonItem.name,
                    country: jsonItem.country
                };
                geoLocations.push(location);
            }
        }
    
        let geoMap = document.getElementById("geoMap") as IgcGeographicMapComponent;
        let geoSeries : IgcGeographicSymbolSeriesComponent = new IgcGeographicSymbolSeriesComponent();
        geoSeries.dataSource = geoLocations;
        geoSeries.markerType = MarkerType.Circle;
        geoSeries.latitudeMemberPath  = "latitude";
        geoSeries.longitudeMemberPath = "longitude";
        geoSeries.markerBrush = "LightGray";
        geoSeries.markerOutline = "Black";
    
        geoMap.series.add(geoSeries);
    }
    

    API References