即时通过地理编码和反向地理编码创建路线淋浴。 效果很好,但是当我想拖动标记时,我想用更新的地址更新正确的输入。问题是我不能说出开始和结束点。使用以下代码,如果我只有1个点,它会正确更新起始地址,但在添加另一个点之后,它们都会开始更新相同的输入。 (不知道我是否有一个好主意通过属性来区分它们 - 我将这些点添加到数组中,并且根据它的长度,它应该添加属性目的地'start'或'stop'。看起来像添加第二个标记后更新上一个的目标值。)
function placeMarker(location) {
if(list.length < 2) {
marker = new google.maps.Marker({
position: location,
map: map,
draggable:true,
animation: google.maps.Animation.DROP,
destination: 'start'
});
map.setCenter(location);
list.push(marker);
if (list.length == 2) {
list[1].destination = 'stop';
};
geocoder.geocode({'latLng': location}, function(results, status) {
if (status == google.maps.GeocoderStatus.OK) {
if (results[0]) {
if(list.length == 1) {
$('#start').val(results[0].formatted_address);
} else {
$('#end').val(results[0].formatted_address);
}
}
}
});
}
if (list.length == 2) {
drawRoute(list[0].getPosition(), list[1].getPosition());
};
google.maps.event.addListener(marker, 'drag', function(event) {
console.log(marker.destination);
geocoder.geocode({'latLng': marker.getPosition()}, function(results, status) {
if (status == google.maps.GeocoderStatus.OK) {
if (marker.destination == 'start') {
$("#start").val(results[0].formatted_address);
} else {
$("#end").val(results[0].formatted_address);
}
}
});
});
};
谢谢你的帮助!
答案 0 :(得分:0)
您只将eventListener附加到一个标记,而不是
google.maps.event.addListener(marker, 'drag', function(event){...})
你应该做点什么
google.maps.event.addListener(list[0], 'drag', function(event){...})
google.maps.event.addListener(list[1], 'drag', function(event){...})
每次创建标记时都应附加这些侦听器。