Web Components Binding Geographic Data Models
The Ignite UI for Web Components map component is designed to display geo-spatial data from shape files and/or geographic locations from data models on geographic imagery maps. The ItemsSource
property of geographic series is used for the purpose of binding to data models. This property can be bound an array of custom objects.
Web Components Binding Geographic Data Models Example
The following table summarized data structures required for each type of geographic series:
Geographic Series | Propriedades | Descrição |
---|---|---|
IgcGeographicSymbolSeriesComponent |
longitudeMemberPath , latitudeMemberPath |
Specifies names of 2 numeric longitude and latitude coordinates |
IgcGeographicHighDensityScatterSeriesComponent |
longitudeMemberPath , latitudeMemberPath |
Specifies names of 2 numeric longitude and latitude coordinates |
IgcGeographicProportionalSymbolSeriesComponent |
longitudeMemberPath , latitudeMemberPath , radiusMemberPath |
Specifies names of 2 numeric longitude and latitude coordinates and 1 numeric column for size/radius of symbols |
IgcGeographicScatterAreaSeriesComponent |
longitudeMemberPath , latitudeMemberPath , colorMemberPath |
Specifies names of 2 numeric longitude and latitude coordinates and 1 numeric column for triangulation of values |
IgcGeographicContourLineSeriesComponent |
longitudeMemberPath , latitudeMemberPath , valueMemberPath |
Specifies names of 2 numeric longitude and latitude coordinates and 1 numeric column for triangulation of values |
IgcGeographicShapeSeriesComponent |
shapeMemberPath |
Specifies the name of data column of ItemsSource items that contains the geographic points of shapes. This property must be mapped to an array of arrays of objects with x and y properties. |
IgcGeographicPolylineSeriesComponent |
shapeMemberPath |
Specifies the name of data column of ItemsSource items that contains the geographic coordinates of lines. This property must be mapped to an array of arrays of objects with x and y properties. |
Code Snippet
The following code shows how to bind the IgcGeographicSymbolSeriesComponent
to a custom data model that contains geographic locations of some cities of the world stored using longitude and latitude coordinates. Also, we use the IgcGeographicPolylineSeriesComponent
to plot shortest geographic path between these locations using the WorldUtility
<igc-geographic-map id="geoMap" width="100%" height="100%">
</igc-geographic-map>
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);
}
API References
colorMemberPath
IgcGeographicContourLineSeriesComponent
IgcGeographicHighDensityScatterSeriesComponent
IgcGeographicPolylineSeriesComponent
IgcGeographicProportionalSymbolSeriesComponent
IgcGeographicScatterAreaSeriesComponent
IgcGeographicSymbolSeriesComponent
ItemsSource
latitudeMemberPath
longitudeMemberPath
radiusMemberPath
valueMemberPath