11368.
当我创建自动完成对象(而不是服务)时,我在顶部获得了邮政编码的实际区域:
这是代码:
autocomplete = new google.maps.places.Autocomplete( document.getElementById('PlaceSearch'),{ types: ['(regions)'] }); [...]
这正是我想要的.但是,出于设计原因,我需要在站点方面使用自定义自动完成系统,所以我已经转移到AutocompleteService,这是同一件事的非UI,仅代码版本(至少它应该是这样).我创建了自动完成服务:
x = new google.maps.places.AutocompleteService();
我使用:
x.getQueryPredictions({ input: key },function (results,status) { if (status == google.maps.places.PlacesServiceStatus.OK) { [...] }); });
但是,这是我从结果中得到的结果:
我正在使用description属性来显示条目,虽然这不是问题,因为返回位置中第一个条目的地点ID也完全不同,即使我输入完全相同的查询.
我也尝试过:
x.getQueryPredictions({input:key,types:[‘(regions)’]},
x.getQueryPredictions({input:key,types:[‘(geocode)’]},types:[‘geocode’]}
但它根本没有任何影响.它完全一样.我也看过Different result between google maps Autocomplete and AutocompleteService,但是它的答案在类型级别回答了一个问题,而我的查询结果在API级别上是不正确的,甚至没有打到typeahead;我直接从自动完成服务在回调函数中使用调试器检查了它.
然后,我在两种情况下检查了网络请求,这是处理的请求:
https://maps.googleapis.com/maps/api/place/js/AutocompletionService.GetPredictions?1s11368\u0026amp;4sen-US\u0026amp;9s(regions)\u0026amp;15e3\u0026amp;key=XXXXXX\u0026amp;callback=_xdc_._qxy1y2\u0026amp;token=45006
它返回正确的JSON.
以下是返回错误JSON的请求:
https://maps.googleapis.com/maps/api/place/js/AutocompletionService.GetQueryPredictionsJson?1s11368\u0026amp;4sen-US\u0026amp;9s(regions)\u0026amp;15e3\u0026amp;key=XXXXXX\u0026amp;callback=_xdc_._38p24d\u0026amp;token=20471
它返回不正确的JSON.从我看到的很明显,我需要传入(区域)作为类型参数,它仍然是不正确的.更荒谬的是,两个查询之间的唯一区别是一个名为token的变量(我尝试用正确的一个替换不正确的查询标记,但我必须直接从Google的服务器下载Google Maps JavaScript API.错误)和回调函数,我肯定与返回的JSON无关.我唯一可以想到的是Google在返回令牌时在其服务器上执行初始化级别的操作,该令牌绑定到该服务器/实例(因此是令牌).
我做错了什么?如何以编程方式使用Google自己的typeahead实现获得相同的结果?