【问题标题】:Toggle dragging of Google Map markers once added as Draggable添加为 Draggable 后切换 Google Map 标记的拖动
【发布时间】:2011-03-16 12:05:53
【问题描述】:

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

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

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

有什么想法可以实现吗?

谢谢

【问题讨论】:

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


    【解决方案1】:

    这应该很容易做到。首先,您需要保留对所有标记的引用。然后要切换拖动行为,您可以简单地遍历标记并在每个标记上调用 enableDragging()disableDragging() 方法。

    为此,您的标记必须使用设置为trueGMarkerOptions.draggable 选项进行初始化,但我假设您已经这样做了。

    这是一个完整的示例:

    <!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>
    

    【讨论】:

      猜你喜欢
      • 2013-11-18
      • 2011-06-08
      • 2017-10-11
      • 2022-11-10
      • 2017-05-18
      • 1970-01-01
      • 2011-12-12
      • 2018-08-17
      • 2016-03-13
      相关资源
      最近更新 更多