UNPKG

ngx-autocom-place

Version:

Angular GoogleMaps Places Api Autocomplete Directive

44 lines 5.91 kB
import { Injectable } from '@angular/core'; export class NgxAutocomPlaceService { constructor() { this.autocompleteService = new google.maps.places.AutocompleteService(); this.placeService = new google.maps.places.PlacesService(document.createElement('div')); } getPredictions(value, options) { if (!this.sessionToken) { this.sessionToken = new google.maps.places.AutocompleteSessionToken(); } const request = Object.assign({ input: value, sessionToken: this.sessionToken }, options); return new Promise((resolve, reject) => { this.autocompleteService.getPlacePredictions(request, (results, status) => { if (status !== google.maps.places.PlacesServiceStatus.OK && status !== google.maps.places.PlacesServiceStatus.ZERO_RESULTS) { reject(status); return; } else { resolve(results); } }); }); } getPlaceDetails(placeId) { return new Promise((resolve, reject) => { this.placeService.getDetails({ placeId, sessionToken: this.sessionToken, }, (result, status) => { this.sessionToken = null; if (status !== google.maps.places.PlacesServiceStatus.OK) { reject(status); return; } resolve(result); }); }); } } NgxAutocomPlaceService.decorators = [ { type: Injectable } ]; NgxAutocomPlaceService.ctorParameters = () => []; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LWF1dG9jb20tcGxhY2Uuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiJDOi9Vc2Vycy92YWxlbi9Eb2N1bWVudHMvUHJvamVjdHMvbmd4QXV0b2NvbVBsYWNlL3Byb2plY3RzL25neC1hdXRvY29tLXBsYWNlL3NyYy8iLCJzb3VyY2VzIjpbImxpYi9uZ3gtYXV0b2NvbS1wbGFjZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHM0MsTUFBTSxPQUFPLHNCQUFzQjtJQU1qQztRQUpBLHdCQUFtQixHQUFHLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztRQUNuRSxpQkFBWSxHQUFHLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUduRSxDQUFDO0lBRWpCLGNBQWMsQ0FBQyxLQUFLLEVBQUUsT0FBTztRQUMzQixJQUFHLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRTtZQUNyQixJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsd0JBQXdCLEVBQUUsQ0FBQztTQUN2RTtRQUNELE1BQU0sT0FBTyxtQkFDWCxLQUFLLEVBQUUsS0FBSyxFQUNaLFlBQVksRUFBRSxJQUFJLENBQUMsWUFBWSxJQUM1QixPQUFPLENBQ1gsQ0FBQztRQUNGLE9BQU8sSUFBSSxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLEVBQUU7WUFDckMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLG1CQUFtQixDQUFDLE9BQU8sRUFBRSxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsRUFBRTtnQkFDeEUsSUFBSSxNQUFNLEtBQUssTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsbUJBQW1CLENBQUMsRUFBRSxJQUFJLE1BQU0sS0FBSyxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxZQUFZLEVBQUU7b0JBQzFILE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztvQkFDZixPQUFPO2lCQUNSO3FCQUFNO29CQUNMLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQztpQkFDbEI7WUFDSCxDQUFDLENBQUMsQ0FBQTtRQUNKLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELGVBQWUsQ0FBQyxPQUFlO1FBQzdCLE9BQU8sSUFBSSxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLEVBQUU7WUFDckMsSUFBSSxDQUFDLFlBQVksQ0FBQyxVQUFVLENBQUM7Z0JBQzNCLE9BQU87Z0JBQ1AsWUFBWSxFQUFFLElBQUksQ0FBQyxZQUFZO2FBQ2hDLEVBQUUsQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLEVBQUU7Z0JBQ3BCLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDO2dCQUN6QixJQUFJLE1BQU0sS0FBSyxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxFQUFFLEVBQUU7b0JBQ3hELE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztvQkFDZixPQUFPO2lCQUNSO2dCQUNELE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUNsQixDQUFDLENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs7O1lBNUNGLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBOZ3hBdXRvY29tUGxhY2VTZXJ2aWNlIHtcblxuICBhdXRvY29tcGxldGVTZXJ2aWNlID0gbmV3IGdvb2dsZS5tYXBzLnBsYWNlcy5BdXRvY29tcGxldGVTZXJ2aWNlKCk7XG4gIHBsYWNlU2VydmljZSA9IG5ldyBnb29nbGUubWFwcy5wbGFjZXMuUGxhY2VzU2VydmljZShkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKSk7XG4gIHNlc3Npb25Ub2tlbjogZ29vZ2xlLm1hcHMucGxhY2VzLkF1dG9jb21wbGV0ZVNlc3Npb25Ub2tlbjtcblxuICBjb25zdHJ1Y3RvcigpIHsgfVxuXG4gIGdldFByZWRpY3Rpb25zKHZhbHVlLCBvcHRpb25zKTogUHJvbWlzZTxnb29nbGUubWFwcy5wbGFjZXMuQXV0b2NvbXBsZXRlUHJlZGljdGlvbltdPiB7XG4gICAgaWYoIXRoaXMuc2Vzc2lvblRva2VuKSB7XG4gICAgICB0aGlzLnNlc3Npb25Ub2tlbiA9IG5ldyBnb29nbGUubWFwcy5wbGFjZXMuQXV0b2NvbXBsZXRlU2Vzc2lvblRva2VuKCk7XG4gICAgfVxuICAgIGNvbnN0IHJlcXVlc3QgPSB7XG4gICAgICBpbnB1dDogdmFsdWUsXG4gICAgICBzZXNzaW9uVG9rZW46IHRoaXMuc2Vzc2lvblRva2VuLFxuICAgICAgLi4ub3B0aW9uc1xuICAgIH07XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIHRoaXMuYXV0b2NvbXBsZXRlU2VydmljZS5nZXRQbGFjZVByZWRpY3Rpb25zKHJlcXVlc3QsIChyZXN1bHRzLCBzdGF0dXMpID0+IHtcbiAgICAgICAgaWYgKHN0YXR1cyAhPT0gZ29vZ2xlLm1hcHMucGxhY2VzLlBsYWNlc1NlcnZpY2VTdGF0dXMuT0sgJiYgc3RhdHVzICE9PSBnb29nbGUubWFwcy5wbGFjZXMuUGxhY2VzU2VydmljZVN0YXR1cy5aRVJPX1JFU1VMVFMpIHtcbiAgICAgICAgICByZWplY3Qoc3RhdHVzKTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmVzb2x2ZShyZXN1bHRzKTtcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICB9KTtcbiAgfVxuXG4gIGdldFBsYWNlRGV0YWlscyhwbGFjZUlkOiBzdHJpbmcpOiBQcm9taXNlPGdvb2dsZS5tYXBzLnBsYWNlcy5QbGFjZVJlc3VsdD4ge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICB0aGlzLnBsYWNlU2VydmljZS5nZXREZXRhaWxzKHtcbiAgICAgICAgcGxhY2VJZCxcbiAgICAgICAgc2Vzc2lvblRva2VuOiB0aGlzLnNlc3Npb25Ub2tlbixcbiAgICAgIH0sIChyZXN1bHQsIHN0YXR1cykgPT4ge1xuICAgICAgICB0aGlzLnNlc3Npb25Ub2tlbiA9IG51bGw7XG4gICAgICAgIGlmIChzdGF0dXMgIT09IGdvb2dsZS5tYXBzLnBsYWNlcy5QbGFjZXNTZXJ2aWNlU3RhdHVzLk9LKSB7XG4gICAgICAgICAgcmVqZWN0KHN0YXR1cyk7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHJlc29sdmUocmVzdWx0KTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG59XG4iXX0=