javascript - 添加为可拖动后切换 Google map 标记的拖动

标签 javascript google-maps google-maps-markers

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

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

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

有什么想法可以实现吗?

谢谢

最佳答案

这应该很容易做到。首先,您需要保留对所有标记的引用。然后切换拖动行为,您可以简单地遍历您的标记并调用 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>

关于javascript - 添加为可拖动后切换 Google map 标记的拖动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3257401/

相关文章:

javascript - 访问 Meteor-React 的 createContainer 中的 URL 参数

javascript - JQuery 从 onclick 函数中检索数据属性

google-maps - 有没有办法在谷歌地图上显示单个国家?应该只是一个国家,不包括其他国家的部分

javascript - Google Maps API,所有标记都打开相同的信息窗口

c# - 如何在 Xamarin.Forms.Maps 中使用暗模式谷歌地图?

javascript - Google map 地标不会取代旧地标

javascript - 我如何处理 redis 和 bluebird 的错误?

javascript - 将 infoWindow 包含到 gmaps markclusterer 中时出现问题

javascript - 在我缩放到的多边形中显示标记

javascript - Node js 事件循环中的微任务在哪里执行,它的阶段是如何排列优先级的?