2010-07-15 16 views
2

我正在開發Google Map API v2應用程序,其中標記從數據庫加載。這些標記然後可以被用戶拖動到新的位置並保存到數據庫。將Google地圖標記添加爲Draggable後,切換拖動功能

我將這些標記添加爲可拖動的,但我不只是希望用戶能夠意外拖動它們。所以我添加了一個按鈕來啓用拖動,然後再次按下以禁用它。

唯一的問題是我不確定如何切換拖動標記而不重新加載標記的功能,因爲地圖上可能會有幾百個標記,並且可能需要一些時間。

任何想法,我可以做到這一點?

謝謝

回答

1

這應該很容易做到。首先,您需要保留對所有標記的引用。然後要切換拖動行爲,您可以簡單地遍歷標記並在每個標記上調用enableDragging()disableDragging()方法。

爲了達到此目的,您的標記將不得不使用GMarkerOptions.draggable選項進行初始化設置爲true,但我認爲您已經在執行此操作。

這裏是一個完全工作的例子:

<!DOCTYPE html> 
<html> 
<head> 
    <script src="http://maps.google.com/maps?file=api&amp;v=2&amp;sensor=false" 
      type="text/javascript"></script> 
</head> 
<body onunload="GUnload()"> 
    <div id="map" style="width: 400px; height: 300px"></div> 

    <input type="button" value="Toggle Drag" onclick="toggleDrag()"> 

    <script type="text/javascript"> 
     var map = new GMap2(document.getElementById("map")); 
     var point = new GLatLng(51.49, -0.12); 
     var marker = new GMarker(point, { draggable: true }); 

     map.setCenter(point, 8); 
     map.addOverlay(marker); 

     function toggleDrag() { 
     if (marker.draggingEnabled()) { 
      marker.disableDragging(); 
     } 
     else { 
      marker.enableDragging(); 
     } 
     } 
    </script> 
</body> 
</html> 
+0

輝煌,感謝丹尼爾。 – Sivakanesh 2010-07-16 07:47:06