【问题标题】:Google places autocomplete - location and radius not working谷歌地方自动完成 - 位置和半径不起作用
【发布时间】:2012-08-02 09:25:39
【问题描述】:

我正在尝试设置 google 地方自动完成功能,以便从最近的点对结果进行排序。我有这样的代码...

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 效果很好,但位置和半径似乎不起作用。

【问题讨论】:

    标签: google-maps-api-3 autocomplete google-places-api


    【解决方案1】:

    documentation

    上面写着:

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

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

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

    javascript service 中也提供此功能

    Working Example

    【讨论】:

    • 我认为问题在于您期望自动完成结果按距离排序。这是不支持的。自动完成的唯一componentRestriction 是国家
    • 这就是问题所在...我尝试使用 bounds 选项,结果现在与位置更相关,所以我想我会坚持下去。谢谢
    【解决方案2】:

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

    我现在的主要问题是自动完成没有rankBy。 见here

    【讨论】:

      【解决方案3】:

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

       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']
        };
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2023-03-31
        • 1970-01-01
        • 2012-02-20
        • 1970-01-01
        • 1970-01-01
        • 2020-09-16
        • 1970-01-01
        相关资源
        最近更新 更多