我正在尝试以下内容,基于GoogleMapsv3APIExample的示例:
我在 gist :
中修改了相关示例有什么建议吗?
谢谢!
答案 0 :(得分:2)
问题出在directions_changed
事件中:当渲染的路线发生变化时,无论是设置了新的DirectionsResult还是用户完成将更改拖动到路线路径时,都会触发此事件。
当calcRoute()
完成后,会创建两组标记:一组来自recalculateMarkers()
,另一组来自calcRoute()
。
必须将事件监听器移至calcRoute()
并在路由成功的情况下进行设置:
function calcRoute() {
var request = {
origin: 'Sydney, NSW',
destination: 'Broken Hill, NSW',
travelMode: google.maps.TravelMode.DRIVING
};
directionsService.route(request, function(response, status) {
if (status == google.maps.DirectionsStatus.OK) {
directionsDisplay.setDirections(response);
showSteps(response);
google.maps.event.addListener(directionsDisplay, 'directions_changed', function() {
console.log('directions_changed');
recalculateMarkers();
});
}
});
}
请参阅example at jsbin。