我使用getPlacePredictions
获取结果自动填充谷歌地图。我在莫斯科使用中心地图。我阅读了文档https://developers.google.com/maps/documentation/javascript/reference#AutocompletionRequest
我看到radius
类型编号,并以米(50000)指定。但是我得到距离650000的结果。例子我键入“Sara”并获得结果“Saransk,Россия”。我的位置 - 是莫斯科。距离莫斯科和萨兰斯克的距离为65万米。
我的代码示例:https://jsfiddle.net/bg479gna/33/
const autoComplete = new google.maps.places.AutocompleteService();
const input = document.querySelector('#search');
const result = document.querySelector('#result');
const getPlaceAutocomplete = (value) => {
autoComplete.getPlacePredictions({
input: value,
location: new google.maps.LatLng(55.755826, 37.617300), //Moscow
radius: 50000, //this value 50km. But i get cities on distance 650km. WHY?!?!
componentRestrictions: {
country: 'ru',
},
}, (data) => {
data.forEach((item) => {
result.innerHTML += `<li>${item.description}</li>`
});
});
};
input.addEventListener('keyup', () => {
const value = input.value;
getPlaceAutocomplete(value)
});
我该如何解决这个问题?
我尝试使用getQueryPredictions
和getPredictions
代替getPlacePredictions
,但我得到的结果相同。
答案 0 :(得分:2)
这只是一种偏见,而不是严格的限制。从the documentation你引用(强调我的):
位置类型:LatLng 预测偏差的位置。预测将偏向给定的位置和半径。 或者,可以使用边界。
半径类型:数字 用于预测偏差的区域的半径。半径以米为单位指定,并且必须始终附有位置属性。或者,可以使用边界。
答案 1 :(得分:0)
答案 2 :(得分:0)
目前,我们只能设置位置的范围。 哟有2种方法:
setLocationBias
-该区域的结果为第一setLocationRestriction
-仅从该区域查找结果例如:
FindAutocompletePredictionsRequest.builder()
.setLocationRestriction(
RectangularBounds.newInstance(
LatLng(
coordinates.latitude - 0.001,
coordinates.longitude - 0.001
),
LatLng(
coordinates.latitude + 0.001,
coordinates.longitude + 0.001
)
)
)
.setTypeFilter(TypeFilter.ADDRESS)
.setSessionToken(token)
.setQuery(constraint.toString())
.build()
答案 3 :(得分:-1)
如果您想为每个国家/地区设置strict
个限制,则需要google.maps.places.ComponentRestrictions
请参阅AutoCompleteService Class&amp; AutoCompleteService Request。
见Component Filtering/Restrictions&amp; Country Codes
希望这有帮助!