@boldadmin/angular-google-maps
Version:
Google Maps adapter for Angular Framework
66 lines • 5.26 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
import { Injectable } from '@angular/core';
import { Coordinates } from '../value-object/coordinates';
import { GoogleMapsFactory } from './google-maps-factory.service';
export class AngularGoogleMapsGeocoder {
/**
* @param {?} googleMaps
*/
constructor(googleMaps) {
this.googleMaps = googleMaps;
}
/**
* @param {?} address
* @param {?} callback
* @return {?}
*/
geocode(address, callback) {
return this.googleMaps.createGeocoder().geocode({ 'address': address }, (/**
* @param {?} results
* @return {?}
*/
results => {
if (results !== null && results[0])
callback(new Coordinates(results[0].geometry.location.lat(), results[0].geometry.location.lng()));
else
callback(new Coordinates(59.9139, 10.7522));
}));
}
/**
* @param {?} coordinates
* @param {?} callback
* @return {?}
*/
reverseGeocode(coordinates, callback) {
/** @type {?} */
const latLng = this.googleMaps.createLatLng(coordinates);
this.googleMaps.createGeocoder().geocode({ 'location': latLng }, (/**
* @param {?} results
* @return {?}
*/
results => {
if (results !== null && results[0])
callback(results[0].formatted_address);
else
callback(latLng.toString());
}));
}
}
AngularGoogleMapsGeocoder.decorators = [
{ type: Injectable }
];
/** @nocollapse */
AngularGoogleMapsGeocoder.ctorParameters = () => [
{ type: GoogleMapsFactory }
];
if (false) {
/**
* @type {?}
* @private
*/
AngularGoogleMapsGeocoder.prototype.googleMaps;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5ndWxhci1nb29nbGUtbWFwcy1nZW9jb2Rlci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGJvbGRhZG1pbi9hbmd1bGFyLWdvb2dsZS1tYXBzLyIsInNvdXJjZXMiOlsic2VydmljZS9hbmd1bGFyLWdvb2dsZS1tYXBzLWdlb2NvZGVyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFDMUMsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDZCQUE2QixDQUFBO0FBQ3pELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLCtCQUErQixDQUFBO0FBR2pFLE1BQU0sT0FBTyx5QkFBeUI7Ozs7SUFFbEMsWUFBb0IsVUFBNkI7UUFBN0IsZUFBVSxHQUFWLFVBQVUsQ0FBbUI7SUFDakQsQ0FBQzs7Ozs7O0lBRUQsT0FBTyxDQUFDLE9BQWUsRUFBRSxRQUE0QztRQUNqRSxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsY0FBYyxFQUFFLENBQUMsT0FBTyxDQUFDLEVBQUMsU0FBUyxFQUFFLE9BQU8sRUFBQzs7OztRQUFFLE9BQU8sQ0FBQyxFQUFFO1lBQzVFLElBQUksT0FBTyxLQUFLLElBQUksSUFBSSxPQUFPLENBQUMsQ0FBQyxDQUFDO2dCQUM5QixRQUFRLENBQUMsSUFBSSxXQUFXLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFBOztnQkFFakcsUUFBUSxDQUFDLElBQUksV0FBVyxDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFBO1FBQ25ELENBQUMsRUFBQyxDQUFBO0lBQ04sQ0FBQzs7Ozs7O0lBRUQsY0FBYyxDQUFDLFdBQXdCLEVBQUUsUUFBMEI7O2NBQ3pELE1BQU0sR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLFlBQVksQ0FBQyxXQUFXLENBQUM7UUFDeEQsSUFBSSxDQUFDLFVBQVUsQ0FBQyxjQUFjLEVBQUUsQ0FBQyxPQUFPLENBQUMsRUFBQyxVQUFVLEVBQUUsTUFBTSxFQUFDOzs7O1FBQUUsT0FBTyxDQUFDLEVBQUU7WUFDckUsSUFBSSxPQUFPLEtBQUssSUFBSSxJQUFJLE9BQU8sQ0FBQyxDQUFDLENBQUM7Z0JBQzlCLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsaUJBQWlCLENBQUMsQ0FBQTs7Z0JBRXRDLFFBQVEsQ0FBQyxNQUFNLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQTtRQUNuQyxDQUFDLEVBQUMsQ0FBQTtJQUNOLENBQUM7OztZQXZCSixVQUFVOzs7O1lBRkYsaUJBQWlCOzs7Ozs7O0lBS1YsK0NBQXFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5pbXBvcnQgeyBDb29yZGluYXRlcyB9IGZyb20gJy4uL3ZhbHVlLW9iamVjdC9jb29yZGluYXRlcydcbmltcG9ydCB7IEdvb2dsZU1hcHNGYWN0b3J5IH0gZnJvbSAnLi9nb29nbGUtbWFwcy1mYWN0b3J5LnNlcnZpY2UnXG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBBbmd1bGFyR29vZ2xlTWFwc0dlb2NvZGVyIHtcblxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgZ29vZ2xlTWFwczogR29vZ2xlTWFwc0ZhY3RvcnkpIHtcbiAgICB9XG5cbiAgICBnZW9jb2RlKGFkZHJlc3M6IHN0cmluZywgY2FsbGJhY2s6IChjb29yZGluYXRlczogQ29vcmRpbmF0ZXMpID0+IHZvaWQpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ29vZ2xlTWFwcy5jcmVhdGVHZW9jb2RlcigpLmdlb2NvZGUoeydhZGRyZXNzJzogYWRkcmVzc30sIHJlc3VsdHMgPT4ge1xuICAgICAgICAgICAgaWYgKHJlc3VsdHMgIT09IG51bGwgJiYgcmVzdWx0c1swXSlcbiAgICAgICAgICAgICAgICBjYWxsYmFjayhuZXcgQ29vcmRpbmF0ZXMocmVzdWx0c1swXS5nZW9tZXRyeS5sb2NhdGlvbi5sYXQoKSwgcmVzdWx0c1swXS5nZW9tZXRyeS5sb2NhdGlvbi5sbmcoKSkpXG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgY2FsbGJhY2sobmV3IENvb3JkaW5hdGVzKDU5LjkxMzksIDEwLjc1MjIpKVxuICAgICAgICB9KVxuICAgIH1cblxuICAgIHJldmVyc2VHZW9jb2RlKGNvb3JkaW5hdGVzOiBDb29yZGluYXRlcywgY2FsbGJhY2s6IChzdHJpbmcpID0+IHZvaWQpIHtcbiAgICAgICAgY29uc3QgbGF0TG5nID0gdGhpcy5nb29nbGVNYXBzLmNyZWF0ZUxhdExuZyhjb29yZGluYXRlcylcbiAgICAgICAgdGhpcy5nb29nbGVNYXBzLmNyZWF0ZUdlb2NvZGVyKCkuZ2VvY29kZSh7J2xvY2F0aW9uJzogbGF0TG5nfSwgcmVzdWx0cyA9PiB7XG4gICAgICAgICAgICBpZiAocmVzdWx0cyAhPT0gbnVsbCAmJiByZXN1bHRzWzBdKVxuICAgICAgICAgICAgICAgIGNhbGxiYWNrKHJlc3VsdHNbMF0uZm9ybWF0dGVkX2FkZHJlc3MpXG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgY2FsbGJhY2sobGF0TG5nLnRvU3RyaW5nKCkpXG4gICAgICAgIH0pXG4gICAgfVxufVxuIl19