Web Components 地理的データ モデルのバインディング

    Ignite UI for Web Components マップ コンポーネントは、シェイプ ファイルからの地理空間データやデータ モデルからの地理的位置を地理的画像マップに表示するように設計されています。地理的シリーズの ItemsSource プロパティは、データ モデルへのバインディングのために使用されます。このプロパティは、カスタム オブジェクトの配列にバインドできます。

    Web Components 地理的データ モデルのバインディングの例

    EXAMPLE
    DATA
    TS
    HTML
    CSS

    このサンプルが気に入りましたか? 完全な Ignite UI for Web Componentsツールキットにアクセスして、すばやく独自のアプリの作成を開始します。無料でダウンロードできます。

    以下の表で、地理的シリーズのタイプごとに必要となるデータ構造を簡単に説明します。

    Geographic シリーズ プロパティ 概要
    IgcGeographicSymbolSeriesComponent longitudeMemberPathlatitudeMemberPath 2 つの数値の経度と緯度座標の名前を指定します。
    IgcGeographicHighDensityScatterSeriesComponent longitudeMemberPathlatitudeMemberPath 2 つの数値の経度と緯度座標の名前を指定します。
    IgcGeographicProportionalSymbolSeriesComponent longitudeMemberPathlatitudeMemberPathradiusMemberPath 2 つの経度座標と緯度座標の名前と、シンボルのサイズ/半径の数字列を 1 列指定します。
    IgcGeographicScatterAreaSeriesComponent longitudeMemberPathlatitudeMemberPathcolorMemberPath 数値の三角測量のために、2 つの経度と緯度座標および数値列を 1 列指定します。
    IgcGeographicContourLineSeriesComponent longitudeMemberPathlatitudeMemberPathvalueMemberPath 数値の三角測量のために、2 つの経度と緯度座標および数値列を 1 列指定します。
    IgcGeographicShapeSeriesComponent shapeMemberPath 図形の地理的ポイントを含む ItemsSource 項目のデータ列の名前を指定します。このプロパティは、x プロパティと y プロパティを持つオブジェクトの配列の配列にマップする必要があります。
    IgcGeographicPolylineSeriesComponent shapeMemberPath 線の地理的座標を含む ItemsSource 項目のデータ列の名前を指定します。このプロパティは、x プロパティと y プロパティを持つオブジェクトの配列の配列にマップする必要があります。

    コード スニペット

    以下のコードは、IgcGeographicSymbolSeriesComponent を、経度と緯度の座標を使用して格納された世界の一部の都市の地理的位置を含むカスタム データ モデルにバインドする方法を示します。また、WorldUtility を使用してこれらの場所間の最短の地理的経路をプロットするために IgcGeographicPolylineSeriesComponent を使用します。

    <igc-geographic-map id="geoMap" width="100%" height="100%">
    
    </igc-geographic-map>
    html
    public flights: any[];
    
    constructor() {
        super();
    
        const cityDAL = { lat:  32.763, lon: -96.663, country: "US", name: "Dallas" };
        const citySYD = { lat: -33.889, lon: 151.028, country: "Australia", name: "Sydney" };
        const cityNZL = { lat: -36.848, lon: 174.763, country: "New Zealand", name: "Auckland" };
        const cityQTR = { lat: 25.285, lon:  51.531,  country: "Qatar", name: "Doha" };
        const cityPAN = { lat:  8.949, lon: -79.400,  country: "Panama", name: "Panama" };
        const cityCHL = { lat: -33.475, lon: -70.647, country: "Chile", name: "Santiago" };
        const cityJAP = { lat:  35.683, lon: 139.809, country: "Japan", name: "Tokyo" };
        const cityALT = { lat: 33.795,  lon: -84.349, country: "US", name: "Atlanta" };
        const cityJOH = { lat: -26.178, lon: 28.004,  country: "South Africa", name: "Johannesburg" };
        const cityNYC = { lat: 40.750, lon: -74.0999, country: "US", name: "New York" };
        const citySNG = { lat:  1.229, lon: 104.177,  country: "Singapore", name: "Singapore" };
        const cityMOS = { lat: 55.750, lon:  37.700,  country: "Russia", name: "Moscow" };
        const cityROM = { lat:  41.880, lon: 12.520,  country: "Italy", name: "Roma" };
        const cityLAX = { lat: 34.000, lon: -118.25,  country: "US", name: "Los Angeles" };
    
        this.flights = [
            { origin: cityDAL, dest: citySNG, color: "Green" },
            { origin: cityMOS, dest: cityNZL, color: "Red" },
            { origin: cityCHL, dest: cityJAP, color: "Blue" },
            { origin: cityPAN, dest: cityROM, color: "Orange" },
            { origin: cityALT, dest: cityJOH, color: "Black" },
            { origin: cityNYC, dest: cityQTR, color: "Purple" },
            { origin: cityLAX, dest: citySYD, color: "Gray" },
        ];
    }
    
    connectedCallback() {
        this.geoMap = document.getElementById("geoMap") as IgcGeographicMapComponent;
    
        for (const flight of this.flights) {
            this.createPolylineSeries(flight);
            this.createSymbolSeries(flight);
        }
    }
    
    createSymbolSeries(flight: any)
    {
        const geoLocations = [flight.origin, flight.dest ];
        const symbolSeries = new IgcGeographicSymbolSeriesComponent();
        symbolSeries.dataSource = geoLocations;
        symbolSeries.markerType = MarkerType.Circle;
        symbolSeries.latitudeMemberPath = "lat";
        symbolSeries.longitudeMemberPath = "lon";
        symbolSeries.markerBrush  = "White";
        symbolSeries.markerOutline = flight.color;
        symbolSeries.thickness = 1;
        this.geoMap.series.add(symbolSeries);
    }
    
    createPolylineSeries(flight: any)
    {
        const geoPath = WorldUtils.calcPaths(flight.origin, flight.dest);
        const geoDistance = WorldUtils.calcDistance(flight.origin, flight.dest);
    
        const geoRoutes = [
            { points: geoPath ,
              origin: flight.origin,
              dest: flight.dest,
              distance: geoDistance,
              time: geoDistance / 850,
        }];
    
        const lineSeries = new IgcGeographicPolylineSeriesComponent();
        lineSeries.dataSource = geoRoutes;
        lineSeries.shapeMemberPath = "points";
        lineSeries.shapeStrokeThickness = 9;
        lineSeries.shapeOpacity = 0.5;
        lineSeries.shapeStroke = flight.color;
    
        this.geoMap.series.add(lineSeries);
    }
    ts
    Ignite UI for Web Components | CTA Banner

    API リファレンス