每次点击地图时,地图上都会放置一个新标记。问题是我只需要一个标记,如果我点击几次,每次添加一个新标记。
如何更改代码以便只放置一个标记,再次单击地图会更改其位置?
到目前为止,这是我的代码:
function clicked(overlay, latlng) {
var icon3 = new GIcon();
icon3.image = "marker.png";
icon3.iconAnchor = new GPoint(15, 40);
var marker2 = new GMarker(latlng, { icon: icon3, draggable: true, title: 'Drag me' });
map.addOverlay(marker2);
}
答案 0 :(得分:1)
我建议在marker2
函数之外保留clicked
的实例,如果marker2为null,请像现在一样制作并添加一个新实例,否则调用marker2.setLatLong(latlng);
来更新它的位置。
未经测试的示例代码:
var marker2;
function clicked(overlay, latlng) {
if (marker2 == null) {
var icon3 = new GIcon();
icon3.image = "marker.png";
icon3.iconAnchor = new GPoint(15, 40);
marker2 = new GMarker(latlng, { icon: icon3, draggable: true, title: 'Drag me' });
map.addOverlay(marker2);
}
else {
marker2.setLatLong(latlng);
}
}
答案 1 :(得分:0)
您需要执行某种检查以查看是否已放置标记。一种选择是保留已添加的标记列表,并在调用函数将标记添加到地图之前检查特定点处标记的列表。如果您需要代码示例,请与我们联系。
答案 2 :(得分:0)
好吧,不要打扰,我自己想通了。我刚刚使用了map.clearOverlays();在标记被放置之前,这解决了问题。