Web Components CSV ファイルを地理的な場所にバインド

    Ignite UI for Web Components Map コンポーネントを使用すると、さまざまな種類のファイルからロードされた地理データをプロットできます。たとえば、カンマ区切り値 (CSV) ファイルから地理的な場所を読み込むことができます。

    Web Components CSV ファイルを地理的な場所にバインドの例

    データ例

    CSV ファイルからのデータの例:

    City,Lat,Lon,State,Code,County,Density,Population
    New York,40.7856,-74.0093,New Jersey,NJ,Hudson,21057,54227
    Dundee,42.5236,-76.9775,New York,NY,Yates,579,1650
    

    コード スニペット

    以下のコードは、マップコンポーネント内の IgcGeographicHighDensityScatterSeriesComponent を、ロードされた CSV ファイルから作成された地理的位置を含むオブジェクトの配列にバインドします。

    <igc-geographic-map id="geoMap" width="100%" height="100%">
    
    </igc-geographic-map>
    
    connectedCallback() {
        this.geoMap = document.getElementById("geoMap") as IgcGeographicMapComponent;
    
        const url = "/data/UsaCitiesPopulation.csv";
    
        fetch(url)
            .then((response) => response.text())
            .then(data => this.onDataLoaded(data));
    }
    
    onDataLoaded(csvData: string) {
        const csvLines = csvData.split("\n");
        // parsing CSV data and creating geographic locations
        const geoLocations: any[] = [];
    
        for (let i = 1; i < csvLines.length; i++) {
            const columns = csvLines[i].split(",");
            const location = {
                latitude:  Number(columns[1]),
                longitude: Number(columns[2]),
                name:  columns[0],
                population: Number(columns[3])
            };
            geoLocations.push(location);
        }
    
        // creating HD series with loaded data
        const geoSeries = new IgcGeographicHighDensityScatterSeriesComponent();
        geoSeries.name = "hdSeries";
        geoSeries.dataSource = geoLocations;
        geoSeries.latitudeMemberPath  = "latitude";
        geoSeries.longitudeMemberPath = "longitude";
        geoSeries.heatMaximumColor = "Red";
        geoSeries.heatMinimumColor = "Black";
        geoSeries.heatMinimum = 0;
        geoSeries.heatMaximum = 5;
        geoSeries.pointExtent = 1;
        geoSeries.mouseOverEnabled = true;
        // adding symbol series to the geographic amp
        this.geoMap.series.add(geoSeries);
        // zooming to bound of lower 48-states
        const geoBounds = {
            left: -130,
            top: 15,
            width: Math.abs(-130 + 65),
            height: Math.abs(50 - 15)
        };
    
        this.geoMap.zoomToGeographic(geoBounds);
    }
    

    API リファレンス