Angular JSON ファイルを地理的な場所にバインド
Ignite UI for Angular Map マップは、さまざまな種類のファイルからロードされた地理データをプロットできます。たとえば、JavaScript Object Notation (JSON) ファイルから地理的位置をロードできます。
Angular JSON ファイルを地理的な場所にバインドの例
データ例
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 },
// ...
]
コード スニペット
以下のコードは、マップコンポーネント内の IgxGeographicHighDensityScatterSeriesComponent
を、ロードされた JSON ファイルから作成された地理的位置を含むオブジェクトの配列にバインドします。
<div className="sampleRoot" >
<igx-geographic-map #map
width="700px"
height="500px"
zoomable="true" >
</igx-geographic-map>
</div>
<ng-template let-series="series" let-item="item" #template>
<div>
<span>{{item.city}}</span>
</div>
</ng-template>
import { AfterViewInit, Component, TemplateRef, ViewChild } from "@angular/core";
import { MarkerType } from 'igniteui-angular-charts';
import { IgxGeographicMapComponent } from 'igniteui-angular-maps';
import { IgxGeographicSymbolSeriesComponent } from 'igniteui-angular-maps';
@Component({
selector: "app-map-binding-geographic-json-files",
styleUrls: ["./map-binding-geographic-json-files.component.scss"],
templateUrl: "./map-binding-geographic-json-files.component.html"
})
export class MapBindingDataJsonPointsComponent implements AfterViewInit {
@ViewChild ("map")
public map: IgxGeographicMapComponent;
@ViewChild("template")
public tooltip: TemplateRef<object>;
constructor() {
}
public ngAfterViewInit(): void {
this.componentDidMount();
}
public componentDidMount() {
// fetching JSON data with geographic locations from public folder
fetch("assets/Data/WorldCities.json")
.then((response) => response.json())
.then((data) => this.onDataLoaded(data));
}
public onDataLoaded(jsonData: any[]) {
const geoLocations: any[] = [];
// parsing JSON data and using only cities that are capitals
for (const jsonItem of jsonData) {
if (jsonItem.cap) {
const location = {
city: jsonItem.name,
country: jsonItem.country,
latitude: jsonItem.lat,
longitude: jsonItem.lon,
population: jsonItem.pop
};
geoLocations.push(location);
}
}
// creating symbol series with loaded data
const geoSeries = new IgxGeographicSymbolSeriesComponent();
geoSeries.dataSource = geoLocations;
geoSeries.markerType = MarkerType.Circle;
geoSeries.latitudeMemberPath = "latitude";
geoSeries.longitudeMemberPath = "longitude";
geoSeries.markerBrush = "LightGray";
geoSeries.markerOutline = "Black";
geoSeries.tooltipTemplate = this.tooltip;
// adding symbol series to the geographic amp
this.map.series.add(geoSeries);
}
}
API リファレンス
IgxGeographicHighDensityScatterSeriesComponent
IgxGeographicSymbolSeriesComponent
GeographicMap
DataSource
latitudeMemberPath
longitudeMemberPath
ページを開く:
GitHub