最初我在地图上有两个点。其中一个是出身,另一个是目的地。
当目的地固定时,原点可以拖动。
在页面加载后第一次绘制地图时,我有一些默认值为origin,而目标点从database获取值.Initial Loading工作正常。我能够在起点和终点之间画出路线。
我使用以下功能在地图上绘制路线
function calcRoute() {
var request = {
origin:myLatLng1,
destination:myLatLng,
optimizeWaypoints: true,
travelMode: google.maps.TravelMode.DRIVING
};
directionsService.route(request, function(response, status) {
if (status == google.maps.DirectionsStatus.OK) {
directionsDisplay.setDirections(response);
}
});
}
现在,只要我的原点标记被拖动,我就会有一个事件监听器,它会获得orign标记新位置的新latlong,然后我调用上面相同的函数来获取新路径。
function togglePos(){
myLatLng1 = new google.maps.LatLng(marker1.getPosition());
calcRoute();
}
这是我遇到问题的地方,我无法在新标记的原点和同一个旧目的地之间重新绘制新路线。 如果any1需要它,这是我的初始化函数。
function initialize() {
var mapOptions = {
zoom: 13,
center: myLatLng
};
map = new google.maps.Map(document.getElementById('map-canvas'),mapOptions);
directionsDisplay.setMap(map);
var image = 'myimage.png';
marker = new google.maps.Marker({
position: myLatLng,
map: map,
icon: image,
});
marker1 = new google.maps.Marker({
position: myLatLng1,
map: map,
draggable: true
});
google.maps.event.addListener(marker1, 'dragend', togglePos);
calcRoute();
}
我没有收到任何javascript错误。
我正在建立这样的东西。
https://developers.google.com/maps/documentation/javascript/examples/directions-simple
但是不是从下拉框中选择它,而是在移动标记时调用该函数。
小提琴链接:http://jsfiddle.net/FvqAL/4/ 但我不知道为什么它不适合小提琴:|
答案 0 :(得分:1)
我对calc路线进行了一些更改,现在无论何时调用它,它都会获得marker1位置并通过它绘制路线。
function calcRoute() {
var request = {
origin:marker1.getPosition(),
destination:myLatLng,
optimizeWaypoints: true,
travelMode: google.maps.TravelMode.DRIVING
};
directionsService.route(request, function(response, status) {
if (status == google.maps.DirectionsStatus.OK) {
directionsDisplay.setDirections(response);
}
});
}
如果你想查看它,这是最终的fiddle。 感谢您的帮助:)