ngx-admin/src/app/pages/maps/search-map/search/search.component.ts
2020-05-22 11:24:39 +03:00

40 lines
1.2 KiB
TypeScript

import { Component, ElementRef, EventEmitter, NgZone, OnInit, Output, ViewChild } from '@angular/core';
import { PositionModel } from '../entity/position.model';
@Component({
selector: 'ngx-search',
templateUrl: './search.component.html',
})
export class SearchComponent implements OnInit {
@Output()
public readonly positionChanged: EventEmitter<PositionModel> = new EventEmitter<PositionModel>();
@ViewChild('search', { static: true })
public searchElementRef: ElementRef;
constructor(private readonly ngZone: NgZone) {}
ngOnInit() {
const autocomplete = new google.maps.places.Autocomplete(
this.searchElementRef.nativeElement, { types: ['address'] },
);
autocomplete.addListener('place_changed', () => {
this.ngZone.run(() => {
// get the place result
const place: google.maps.places.PlaceResult = autocomplete.getPlace();
// verify result
if (place.geometry === undefined || place.geometry === null) {
return;
}
this.positionChanged.emit(new PositionModel(
place.geometry.location.lat(),
place.geometry.location.lng(),
));
});
});
}
}