我有谷歌地图和两个输入。他们都使用自动完成,如下所示:
//first input autocomplete
var input1 = (document.getElementById('start'));
var autocomplete1 = new google.maps.places.Autocomplete(input1);
autocomplete1.bindTo('bounds', map);
//second input autocomplete
var input2 = (document.getElementById('end'));
var autocomplete2 = new google.maps.places.Autocomplete(input2);
autocomplete2.bindTo('bounds', map);
在我填写这两个输入后,我正在使用Directions API显示它们之间的最短路径:
function calcRoute() {
var start = document.getElementById("start").value;
var end = document.getElementById("end").value;
var request = {
origin:start,
destination:end,
travelMode: google.maps.TravelMode.DRIVING
};
directionsService.route(request, function(result, status) {
if (status == google.maps.DirectionsStatus.OK) {
directionsDisplay.setDirections(result);
}
});
}
我的输入如下:
<input type="text" id="start" onchange="calcRoute();" />
<input type="text" id="end" onchange="calcRoute();" />
问题:
如果我在这些输入中键入完整地址,那么一切都可以正常工作:
柏林,德国&amp;德国汉堡(我猜这是因为每个字母都会触发onchange())。
但是当我输入时:
柏林,德国,然后 Hamb&gt;从Google自动填充下拉列表中点击汉堡
它没有显示汉堡,它显示了一个名为Hamb的小镇。
有没有办法解决它?
答案 0 :(得分:1)
autocompleteTo = new google.maps.places.Autocomplete(
(document.getElementById('end')),
{types: ['geocode']}
);
google.maps.event.addListener(autocompleteTo, 'place_changed', function () {
calcRoute();
});
在输入字段的每次更改时,触发place_changed事件会更有效,然后触发路由重新计算。