我有followıng查询,这是一个邮政编码:
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也完全不同,即使我输入完全相同的查询。< / p>
我也试过了:
x.getQueryPredictions({ input: key, types: ['(regions)'] }
,
x.getQueryPredictions({ input: key, types: ['(geocode)'] }
,
x.getQueryPredictions({ input: key, types: ['geocode'] }
但它根本没有任何效果。它完全一样。我还看到了Different result between google maps Autocomplete and AutocompleteService,但它的答案在typeahead
级别回答了一个问题,而我的查询结果在API级别上是不正确的,甚至没有达到类型;我直接从自动完成服务中使用调试器在回调函数中检查了它。
然后,我在两种情况下检查了网络请求,这是处理的请求:
https://maps.googleapis.com/maps/api/place/js/AutocompletionService.GetPredictions?1s11368&4sen-US&9s(regions)&15e3&key=XXXXXX&callback=_xdc_._qxy1y2&token=45006
返回正确的JSON。
以下是返回错误JSON的请求:
https://maps.googleapis.com/maps/api/place/js/AutocompletionService.GetQueryPredictionsJson?1s11368&4sen-US&9s(regions)&15e3&key=XXXXXX&callback=_xdc_._38p24d&token=20471
它返回错误的JSON。从我看到的很明显,我需要传递(regions)
作为types
参数,它仍然是不正确的。更荒谬的是,两个查询之间的唯一区别是一个名为token
的变量(我尝试用正确的一个替换不正确的查询令牌,但我有The Google Maps JavaScript API must be downloaded directly from Google's servers.
错误)和回调函数,我肯定与返回的JSON无关。我唯一可以想到的是Google在返回令牌时在其服务器上的初始化级别做了一些事情,该令牌绑定到该服务器/实例(因此是令牌)。
我做错了什么?如何以编程方式使用Google自己的先行实现获得相同的结果?
答案 0 :(得分:2)
我找到了解决方案。我正在调用getQueryPredictions
而不是getPredictions
,它返回了不同的结果。我已将我的代码更改为调用getPredictions
并开始正常工作。