【问题标题】:Get postal code with autocomplete service from google maps api v3从 google maps api v3 获取带有自动完成服务的邮政编码
【发布时间】:2012-12-05 20:09:44
【问题描述】:

我正在使用来自 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 所做的那样,see this example

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

【问题讨论】:

标签: javascript google-maps-api-3


【解决方案1】:

检查此代码sn-p:

    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>

【讨论】:

  • 这不使用 AutocompleteService 类,这是原始问题所问的
【解决方案2】:

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

【讨论】:

  • 但在这种情况下,如何以编程方式将Autocomplete 类与定义的输入字符串一起使用?如果我不想有一个文本字段并且已经知道我想用作输入的字符串?
  • @zanona 你不能使用 Autocomplete 类,因为那是一个 UI 类(它附加到一个文本框)。为了您的目的,您需要使用 AutocompleteService 类:developers.google.com/maps/documentation/javascript/…
  • autocompleteService 不提供 getDetails 方法作为 Autocomplete
  • 我已经 6 年多没有看过 Google 的地理自动完成 API,@Arseniy-II。很高兴您发布了更新的答案!
【解决方案3】:

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

的解决方案

Documentation 用于 PlacesService 类

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-11-28
    • 2011-07-31
    • 1970-01-01
    • 1970-01-01
    • 2020-01-27
    • 1970-01-01
    • 1970-01-01
    • 2014-08-25
    相关资源
    最近更新 更多