Google的AutocompleteService和Autocomplete会使用相同的查询返回不同的结果

Can*_*ğlu 7 javascript autocomplete google-places-api

我有followıng查询,这是一个邮政编码: 11368.

当我创建自动完成对象(而不是服务)时,我在顶部获得了邮政编码的实际区域:

在此输入图像描述

这是代码:

  autocomplete = new google.maps.places.Autocomplete(
       document.getElementById('PlaceSearch'),
       { types: ['(regions)'] });
       [...]
Run Code Online (Sandbox Code Playgroud)

这正是我想要的.但是,出于设计原因,我需要在站点方面使用自定义自动完成系统,因此我已经转移到AutocompleteService了同一事物的非UI,仅代码版本(至少它应该是这样).我创建了自动完成服务:

x = new google.maps.places.AutocompleteService();

我使用:

 x.getQueryPredictions({ input: key }, function (results, status) {
 if (status == google.maps.places.PlacesServiceStatus.OK) {
           [...]
    });
});
Run Code Online (Sandbox Code Playgroud)

但是,这是我从结果中得到的结果:

在此输入图像描述

我正在使用description属性来显示条目,虽然这不是问题,因为返回位置中第一个条目的地点ID也完全不同,即使我输入完全相同的查询.

我也尝试过:

x.getQueryPredictions({ input: key, types: ['(regions)'] },

x.getQueryPredictions({ input: key, types: ['(geocode)'] },

x.getQueryPredictions({ input: key, types: ['geocode'] }

但它根本没有任何影响.它完全一样.我也看到谷歌地图自动完成和自动完成服务之间有不同的结果,但它的答案在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自己的typeahead实现获得相同的结果?

Can*_*ğlu 3

我找到了解决方案。我打电话getQueryPredictions而不是getPredictions,它返回了不同的结果。我已经更改了我的代码来调用getPredictions并且它开始正常工作。

  • “自动完成”和“getPlacePredictions”有什么区别 (2认同)