我正嘗試用兩個標記(每個地圖上的一個標記)創建兩個地圖。不能爲兩位聽衆使用相同的功能
在拖動標記時,其位置在頁面中的DIV元素中更新。在移動地圖時,標記將移動到地圖的中心,然後再次更新DIV元素。
我已經創建了相應更改的功能。爲了確定要檢查或移動哪個標記或地圖,我在函數中傳遞了地圖或標記變量。
但是,顯示奇怪行爲的地圖。在試圖拖動標記時,它會附加到我的鼠標指針上,永遠不會放在地圖上,也不會觸發任何事件。 此外,移動地圖不會做任何事情。
如果我分別聲明函數爲每個標誌或地圖的形式
addListener(marker, 'drag', function() { //some code });
它工作完全正常。
不確定發生了什麼問題。
這裏是代碼片段:
//add a listener for the marker movement
google.maps.event.addListener(marker_start, 'drag', handleMarkerDrag(marker_start, 1));
google.maps.event.addListener(marker_end, 'drag', handleMarkerDrag(marker_end, 2));
//add a listener for the map
google.maps.event.addListener(map_start, 'dragend', handleMapDragend(map_start, marker_start, 1));
google.maps.event.addListener(map_end, 'dragend', handleMapDragend(map_end, marker_end, 2));
和它們的功能在處理事件:
function handleMarkerDrag(marker, x)
{
//get the current location of the marker
var marker_pos = marker.getPosition();
//convert lat-lang datastructure into individual latitude and longitude
var lat = marker_pos.lat();
var lng = marker_pos.lng();
//now update the content in the html page
if(x == 1)
{
document.getElementById("longitude_start").innerHTML = lng+'<input type="hidden" name="longitude_start" value='+lng+'>';
document.getElementById("latitude_start").innerHTML = lat+'<input type="hidden" name="latitude_start" value='+lat+'>';
}
else
{
document.getElementById("longitude_end").innerHTML = lng+'<input type="hidden" name="longitude_end" value='+lng+'>';
document.getElementById("latitude_end").innerHTML = lat+'<input type="hidden" name="latitude_end" value='+lat+'>';
}
}
function handleMapDragend(map, marker, x)
{
//get the current location of the marker
var marker_pos = map.getCenter();
//set marker to the enter of the map
marker.setPosition(marker_pos);
//convert lat-lang datastructure into individual latitude and longitude
var lat = marker_pos.lat();
var lng = marker_pos.lng();
//now update the content in the html page
if(x == 1)
{
document.getElementById("longitude_start").innerHTML = lng+'<input type="hidden" name="longitude_start" value='+lng+'>';
document.getElementById("latitude_start").innerHTML = lat+'<input type="hidden" name="latitude_start" value='+lat+'>';
}
else
{
document.getElementById("longitude_end").innerHTML = lng+'<input type="hidden" name="longitude_end" value='+lng+'>';
document.getElementById("latitude_end").innerHTML = lat+'<input type="hidden" name="latitude_end" value='+lat+'>';
}
}
哦,和marker_start,marker_end,map_start,map_end都是全球性的。無論如何,我認爲這並不重要。 –