From b1d40d5446e516eb89b80e4c3d65923deafb7cec Mon Sep 17 00:00:00 2001 From: Ibby Hadeed Date: Wed, 13 Jul 2016 18:13:10 -0400 Subject: [PATCH] feat(googlemaps): add Geocoder class closes #280 --- src/plugins/googlemaps.ts | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) diff --git a/src/plugins/googlemaps.ts b/src/plugins/googlemaps.ts index dd8bbcfe1f..fbbb92ac2d 100644 --- a/src/plugins/googlemaps.ts +++ b/src/plugins/googlemaps.ts @@ -1005,3 +1005,38 @@ export class GoogleMapsLatLng { return this.lat.toFixed(precision) + ',' + this.lng.toFixed(precision); } } +/** + * @private + */ +export interface GeocoderRequest { + address?: string; + position?: {lat: number; lng: number}; +} +/** + * @private + */ +export interface GeocoderResult { + position?: {lat: number; lng: number}; + subThoroughfare?: string; + thoroughfare?: string; + locality?: string; + adminArea?: string; + postalCode?: string; + country?: string; +} +/** + * @private + */ +export class Geocoder { + /** + * Converts position to address and vice versa + * @param {GeocoderRequest} request Request object with either an address or a position + * @returns {Promise} + */ + static geocode(request: GeocoderRequest): Promise { + return new Promise((resolve, reject) => { + if (!plugin || !plugin.google || !plugin.google.maps || !plugin.google.maps.Geocoder) reject({error: 'plugin_not_installed'}); + else plugin.google.maps.Geocoder.geocode(request, resolve); + }); + } +}