ng-gplace-autocomplete
Version:
An angular componet for google maps autocomplete!
126 lines (121 loc) • 4.44 kB
JavaScript
import { Injectable, ɵɵdefineInjectable, EventEmitter, Component, NgZone, Input, Output, ViewChild, NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { FormsModule } from '@angular/forms';
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
class NgGplaceAutocompleteService {
constructor() { }
}
NgGplaceAutocompleteService.decorators = [
{ type: Injectable, args: [{
providedIn: 'root'
},] }
];
/** @nocollapse */
NgGplaceAutocompleteService.ctorParameters = () => [];
/** @nocollapse */ NgGplaceAutocompleteService.ngInjectableDef = ɵɵdefineInjectable({ factory: function NgGplaceAutocompleteService_Factory() { return new NgGplaceAutocompleteService(); }, token: NgGplaceAutocompleteService, providedIn: "root" });
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
// import { FormGroup, FormBuilder } from '@angular/forms';
class NgAutocompleteComponent {
/**
* @param {?} ngZone
*/
constructor(ngZone) {
this.ngZone = ngZone;
this.placeholder = 'Search an address';
this.country = ['us'];
this.onAddressChange = new EventEmitter();
}
/**
* @return {?}
*/
ngAfterViewInit() {
this.getPlaceAutocomplete();
}
/**
* @private
* @return {?}
*/
getPlaceAutocomplete() {
/** @type {?} */
const autocomplete = new google.maps.places.Autocomplete(this.addresstext.nativeElement, {
componentRestrictions: { country: this.country },
types: [this.addressType] // 'establishment'|'address'|'geocode'
});
google.maps.event.addListener(autocomplete, 'place_changed', (/**
* @return {?}
*/
() => {
this.ngZone.run((/**
* @return {?}
*/
() => {
/** @type {?} */
const place = autocomplete.getPlace();
//verify result
if (place.geometry === undefined || place.geometry === null) {
return;
}
// console.log('Inside ng-gplace-autocomplete',place.geometry.location.lat(),place.geometry.location.lng())
/** @type {?} */
const data = {
location: {
lat: place.geometry.location.lat(),
lng: place.geometry.location.lng()
},
place: place
};
this.invokeEvent(data);
}));
}));
}
/**
* @param {?} place
* @return {?}
*/
invokeEvent(place) {
this.onAddressChange.emit(place);
}
}
NgAutocompleteComponent.decorators = [
{ type: Component, args: [{
selector: 'ng-autocomplete',
template: "<input #autocomplete type=\"text\" [ngStyle]=\"style\" [placeholder]=\"placeholder\" [(ngModel)]=\"autocompleteInput\">",
styles: ["input{margin:0;border:1px solid #778899}"]
}] }
];
/** @nocollapse */
NgAutocompleteComponent.ctorParameters = () => [
{ type: NgZone }
];
NgAutocompleteComponent.propDecorators = {
style: [{ type: Input }],
placeholder: [{ type: Input }],
addressType: [{ type: Input }],
country: [{ type: Input }],
onAddressChange: [{ type: Output }],
addresstext: [{ type: ViewChild, args: ['autocomplete', { static: false },] }]
};
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
class NgAutocompleteModule {
}
NgAutocompleteModule.decorators = [
{ type: NgModule, args: [{
declarations: [NgAutocompleteComponent],
imports: [
CommonModule,
FormsModule
],
exports: [NgAutocompleteComponent]
},] }
];
export { NgAutocompleteComponent, NgAutocompleteModule, NgGplaceAutocompleteService };
//# sourceMappingURL=ng-gplace-autocomplete.js.map