9

我正在使用来自 google maps api V3 的自动完成服务来进行自定义自动完成输入。我基本上调用这个函数来检索城市建议。

function getPlaces(st){
    gService.getQueryPredictions({input:st,types:['geocode']},function(predictions,status)      {
        if(status != google.maps.places.PlacesServiceStatus.OK) return false;
        for(var i = 0, prediction; prediction = predictions[i]; i++){
            console.log(prediction);
        }
        return predictions;
    });
}

这很好用,但我想获取与城市相关的邮政编码。就像 V2 api 所做的那样,请参阅这个示例

我试图将类型选项更改为城市,但结果是一样的。知道怎么做吗?

4

3 回答 3

1

检查此代码段:

    var geocoder;
var map;
function initialize() {  
  var input = document.getElementById('id_address');
  var options = {
    types: ['address'],
    componentRestrictions: {
      country: 'in'
    }
  };

  autocomplete = new google.maps.places.Autocomplete(input, options);

  google.maps.event.addListener(autocomplete, 'place_changed', function() {
    var place = autocomplete.getPlace();
    
    for (var i = 0; i < place.address_components.length; i++) {
      for (var j = 0; j < place.address_components[i].types.length; j++) {
        if (place.address_components[i].types[j] == "postal_code") {
          document.getElementById('postal_code').innerHTML = place.address_components[i].long_name;

        }
      }
    }
  })
}
google.maps.event.addDomListener(window, "load", initialize)
<script type="text/javascript" src="http://maps.googleapis.com/maps/api/js?key=AIzaSyDxcRPSsACIjdvMWRcfJBMzp4pKQXPJjj0&libraries=places"></script>
<input id="id_address" type="text" value="" />
<div id="postal_code"></div>

于 2016-09-03T09:08:59.860 回答
0

在新的 API 中,AutocompleteService 仅搜索与您目前输入的文本匹配的猜测字符串。要获取包含地址和其他数据的实际 Place 对象,您需要使用在将 autocomplete() 函数附加到文本框时创建的 Autocomplete 对象。在此处查看文档:https ://developers.google.com/maps/documentation/javascript/places#getting_place_information

于 2012-12-12T03:01:05.390 回答
0

如果返回的预测是一个地方,那么它将有一个place_id属性。您需要将该 id 传递给该类的getDetails方法,PlacesService这将返回您的邮政信息。获取邮政编码的方法有点绕,但这是我发现的唯一适用于AutocompleteService

PlacesService 类的文档

于 2021-09-15T17:08:05.193 回答