2

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

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

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

有什么想法我能做到这一点吗?

谢谢

4

1 回答 1

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>
于 2010-07-15T20:18:12.070 回答