我在尝试将Google地图自动填充的结果偏向地图上的最后一个图钉时出现问题。我在这里关注Google的教程: https://developers.google.com/maps/documentation/javascript/places-autocomplete#change_search_area
我的CoffeeScript代码如下:
initSearch = ->
autocomplete = new (google.maps.places.Autocomplete)(document.getElementById('location-query'), types: [ 'geocode' ])
autocomplete.addListener 'place_changed', ->
place = autocomplete.getPlace()
addDestination(place, map, insertIndex) #places pin on map
console.log 'autocomplete bounds (before): ' + autocomplete.getBounds()
#setting bounds around new place
biasCircle = new google.maps.Circle
center: place.geometry.location
radius: 500 #in kilometers
autocomplete.setBounds(biasCircle.getBounds())
console.log 'autocomplete bounds (after): ' + autocomplete.getBounds()
编译成以下javascript:
initSearch = function() {
var autocomplete;
autocomplete = new google.maps.places.Autocomplete(document.getElementById('location-query'), {
types: ['geocode']
});
return autocomplete.addListener('place_changed', function() {
var biasCircle;
place = autocomplete.getPlace();
addDestination(place, map, insertIndex);
console.log('autocomplete bounds (before): ' + autocomplete.getBounds());
biasCircle = new google.maps.Circle({
center: place.geometry.location,
radius: 500
});
autocomplete.setBounds(biasCircle.getBounds());
return console.log('autocomplete bounds (after): ' + autocomplete.getBounds());
});
};
引脚已正确放置在地图上,但无论我添加多少个地方,console.log都会返回:
autocomplete bounds (before): undefined
autocomplete bounds (after): ((9.923577823579402, -84.09528446042509), (9.932560976420598, -84.08616473957488))
正确设置边界(如第二个{{1}}所示),但结果实际上没有偏差,第一个结果总是未定义。
我们用来测试结果是否存在偏差的测试用例是: 1.键入圣何塞'自动完成(最佳结果应该在美国) 2.添加哥伦比亚利蒙'作为地图上的标记 3.键入圣何塞'在自动完成中,最好的结果应该是圣何塞,哥斯达黎加
我们认为这可能是一个范围问题,所以我们尝试了console.log
无处不在,但仍然遇到了同样的问题。我们还尝试在单独的方法中设置自动完成边界(而不是place_changed事件,但这也不起作用)。
提前感谢您的帮助!
更新:尝试Cedric的答案 在Cedric的建议中,我试图在侦听器回调之外设置边界(方法是从侦听器内调用的),但我仍然遇到同样的问题。新代码:
window.autocomplete