如果我输入Atl,那么GooglePlace自动填充功能会显示一系列匹配结果,我可以为输入字段选择这些结果。问题是我不确定在哪里捕获它以便将其存储在后端。如果我是console.log(“location”)那么它只给我实际输入的文本。因此,即使我在输入“Atl”后选择整个名称Atlanta,Ga,该位置仅捕获“ATL”。
这是我的HTML输入字段:
<input [(ngModel)]="location" id="places" type="text"
name="search" placeholder="Enter city" #search>
以下是根据输入中输入的文本返回地点的代码:
ngOnInit(){
this.mapsApiLoader.load().then(
() => {
let autocomplete = new google.maps.places.Autocomplete(this.searchElement.nativeElement, {types:['(cities)']});
autocomplete.addListener("place_changed", () => {
this.ngZone.run(() => {
let place: google.maps.places.PlaceResult = autocomplete.getPlace();
if(place.geometry === undefined || place.geometry === null){
return;
}
});
});
}
)
}
如何保存完整的城市名称而不是仅保存我输入的文字?我想要从下拉列表中选择的文字。
由于
答案 0 :(得分:1)
从下拉列表中选择结果并触发place_changed
事件时,“自动完成”窗口小部件将返回PlaceResult
个对象。您可以使用name
获取城市名称,也可以使用formatted_address
字段获取城市,州,国家/地区。以下代码片段改编自您的代码:
let cityNameString = '';
let cityFullString = '';
let place: google.maps.places.PlaceResult = autocomplete.getPlace();
if (place.geometry === undefined || place.geometry === null) {
return;
} else {
cityNameString = place.name;
cityFullString = place.formatted_address;
// Do stuff with the strings
}