in src/geocoder/geocoder.ts [496:534]
public getResult(data: BingGeoboundaryResponse): IGeocodeResult {
let result: BingGeoboundaryResponse = data;
if (result && result.d && Array.isArray(result.d.results) && result.d.results.length > 0) {
let entity: BingGeoboundary = result.d.results[0];
let primitives: BingGeoboundaryPrimitive[] = entity.Primitives;
if (primitives && primitives.length > 0) {
let coordinates: IGeocodeBoundaryCoordinate = {
latitude: this.latitude,
longitude: this.longitude,
locations: []
};
primitives.sort((a, b) => {
if (a.Shape.length < b.Shape.length) {
return 1;
}
if (a.Shape.length > b.Shape.length) {
return -1;
}
return 0;
});
let maxGeoData: number = Math.min(primitives.length, this.maxGeoData);
for (let i = 0; i < maxGeoData; i++) {
let ringStr: string = primitives[i].Shape;
let ringArray: string[] = ringStr.split(",");
for (let j: number = 1; j < ringArray.length; j++) {
coordinates.locations.push({ nativeBing: ringArray[j] });
}
}
return { coordinates: coordinates };
}
}
return { error: new Error("Geocode result is empty.") };
}