我正在开发一个 Google Map API v2 应用程序,其中的标记是从数据库加载的。然后用户可以将这些标记拖到新位置并保存到数据库中。
我将这些标记添加为可拖动,但我不只是希望用户能够不小心拖动它们。所以我添加了一个按钮来启用拖动,然后再次按下以禁用它。
唯一的问题是我不确定如何在不重新加载标记的情况下切换拖动标记的功能,因为 map 上可能有几百个标记并且可能需要一些时间。
有什么想法可以实现吗?
谢谢
最佳答案
这应该很容易做到。首先,您需要保留对所有标记的引用。然后切换拖动行为,您可以简单地遍历您的标记并调用 enableDragging()
或 disableDragging()
每个标记上的方法。
要使其正常工作,您的标记必须通过将 GMarkerOptions.draggable
选项设置为 true
进行初始化,但我假设您已经这样做了。
这是一个完整的示例:
<!DOCTYPE html>
<html>
<head>
<script src="http://maps.google.com/maps?file=api&v=2&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/