一旦添加为可拖动,就会切换拖动Google地图标记

时间:2010-07-15 15:56:00

标签: javascript google-maps google-maps-markers

我正在开发一个Google Map API v2应用,其中标记从数据库加载。然后,用户可以将这些标记拖动到新位置并保存到数据库中。

我将这些标记添加为可拖动,但我不仅希望用户能够意外拖动它们。所以我添加了一个按钮来启用拖动,然后再次按下以禁用它。

唯一的问题是我不知道如何在不重新加载标记的情况下切换拖动标记的能力,因为地图上可能有几百个标记,可能需要一些时间。

我是如何实现这一目标的?

由于

1 个答案:

答案 0 :(得分: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>