保存Google Place Autocomplete的结果

时间:2018-04-04 00:19:49

标签: google-maps-api-3 ionic3

如果我输入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;
        }
      });
    });
  }
)

}

如何保存完整的城市名称而不是仅保存我输入的文字?我想要从下拉列表中选择的文字。

由于

1 个答案:

答案 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
}