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 地方信息自动填充功能
使用Javascript和Places会话令牌的Google地方自动填充示例