public getResult()

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.") };
        }