2

我正在尝试使用 Google Maps Autocomplete API,但它与 Geocoder API 之间存在一些差异,例如:

在自动完成 API 上,我正在尝试搜索地址“Rua Tiradentes,1020,Ibirubá”,当我在列表中选择时,地址组件“street_number”没有出现,这是这个地址和其他地址的问题。

让我们尝试使用地理编码器 API:

var geocoder = new google.maps.Geocoder();
geocoder.geocode({ 'address': 'Rua Tiradentes, 1020, Ibirubá' }, function (results, status) {
   if (status == google.maps.GeocoderStatus.OK) {
      console.log(results);
   } else {
      alert("Geocoder failed due to: " + status);
   }
});

现在,street_number 位于 address_components 内,是否有任何解决方法或 Google 自动完成功能不可靠?

这是地点代码:

var b = new google.maps.places.Autocomplete(myInput);

google.maps.event.addListener(b, 'place_changed', function () {
    console.log(b.getPlace());
})
4

1 回答 1

0

可能的解决方法如下。您可以尝试对该地点进行地理编码以获取所有地址组件。最近,Google 增加了使用 placeId 作为请求参数对地址进行地理编码的可能性。

您可以在文档中找到更多详细信息: https ://developers.google.com/maps/documentation/javascript/geocoding https://developers.google.com/maps/documentation/javascript/3.exp/reference#GeocoderRequest

所以,你可以得到像 var place = autocomplete.getPlace(); 这样的地方。您可以像 place.place_id 那样获取地点 ID 并像这样执行地理编码请求:

geocoder.geocode( { 'placeId': place.place_id}, function(results, status) { 
  if (status == google.maps.GeocoderStatus.OK) { 
    console.log(results); 
  } else { 
    alert('Geocode was not successful for the following reason: ' + status); 
  } 
}); 
于 2015-07-21T20:00:54.453 回答