6

我试图设置谷歌地点自动完成以从最近的点对结果进行排序。我有这样的代码...

var defaultPlace = new google.maps.LatLng(49.227463, 16.546097);

var optionsAuto = {
    location: defaultPlace,
    radius: 20000,
    types: ['geocode'],
    componentRestrictions: {
        country: 'cz'
    }
};

var autocomplete = new google.maps.places.Autocomplete( inputStart, optionsAuto );

types 和 componentRestrictions 效果很好,但位置和半径似乎不起作用。

4

3 回答 3

6

文档

它指出:

半径 | 定义返回 Place 结果的距离(以米为单位)。最大允许半径为 50 000 米。请注意,如果指定了 rankby=distance(在下面的可选参数中描述),则不得包含半径。

听起来你想要可选参数:rankby=distance:

排名比 | 距离。此选项按结果与指定位置的距离升序排序。距离排名结果将设置一个固定的搜索半径50公里。关键字、名称或类型中的一种或多种是必需的。

这也可以在javascript 服务中使用

工作示例

于 2012-08-04T19:23:43.800 回答
1

要返回半径范围内的地方,您需要将strictbounds设置 为 true。

我现在的主要问题是自动完成没有rankBy。看这里

于 2018-04-04T20:54:48.977 回答
0

有人可能不同意我的观点,但在我的情况下,我定义了不带引号的半径,如下所示

 var request = {
    location: pyrmont,
        bounds: map.getBounds(),
    radius: 2000,
    zoom: 15,
    types: ['restaurant']
  };

所以它对半径没有任何影响,并且显示了独立于半径的结果但是当我在它上面应用引号时,半径参数似乎正在工作

 var request = {
    location: pyrmont,
        bounds: map.getBounds(),
    radius: '2000',
    zoom: 15,
    types: ['restaurant']
  };
于 2015-10-19T06:27:11.237 回答