Google 地方信息自动填充边界并不总是有效

Posted

技术标签:

【中文标题】Google 地方信息自动填充边界并不总是有效【英文标题】:Google Places Autocomplete boundaries doesn't always work 【发布时间】:2017-04-04 13:06:28 【问题描述】:

我正在使用适用于 javascript 的 Google Maps Places API,并将我的边界设置为 德国柏林

这是我的代码(我正在使用一个 npm 模块,但正如您在 console.log 中看到的,边界被正确传递):

import React from 'react';
import ReactDOM from 'react-dom';
import Autocomplete from 'react-google-autocomplete';

document.addEventListener('DOMContentLoaded', function() 
  ReactDOM.render(<Autocomplete
        style=width: '90%'
        onPlaceSelected=(place) => 
          console.log(place);
        
        types=[]
        bounds=new window.google.maps.LatLngBounds(
                      new window.google.maps.LatLng(51.2, 13.41),
                      new window.google.maps.LatLng(52.5200, 10.40)
                    )
      />, document.getElementById('mount'));
);

现在,当我尝试搜索附近的地点时,它会先为我提供印度的地点,然后是柏林:

没有柏林这个词:

用柏林这个词:

我的边界设置为柏林:

所以我现在的问题是:这种行为正常还是我得到了什么 错误的?出于好奇,我尝试切换 LatLng,但同样 结果。

【问题讨论】:

【参考方案1】:

您应该将strictBounds 设置为true 以将结果限制在范围内。否则,您会偏爱该领域,但结果可能来自外部。

来自API docs:

bounds 是一个 google.maps.LatLngBounds 对象,用于指定搜索地点的区域。结果偏向但不限于这些范围内的位置。 strictBounds 是一个布尔值,用于指定 API 是否必须仅返回严格在给定边界定义的区域内的那些位置。 API 不会返回该区域以外的结果,即使它们与用户输入匹配。

【讨论】:

【参考方案2】:

使用这些界限:

new google.maps.LatLngBounds(
    new google.maps.LatLng(52.35, 13.1),
    new google.maps.LatLng(52.65, 13.8),
)

【讨论】:

以上是关于Google 地方信息自动填充边界并不总是有效的主要内容,如果未能解决你的问题,请参考以下文章

在 Meteor 中使用 Google 地方信息自动填充功能

Google 地方信息自动填充功能无法加载搜索结果

使用Javascript和Places会话令牌的Google地方自动填充示例

邮政编码的 Google 地方自动填充

Google地方自动填充功能会显示“ Cannoat加载结果!”

自动填充的Google API会出现“类型”问题