2010-03-24 70 views
0

每次我点击地图时,地图上都会放置一个新的标记。问题是我只需要一个标记,如果我点击几次,每次添加一个新标记。仅添加一次Google地图上的标记

如何更改代码,以便只放置一个标记,并且当再次单击地图时,它会更改其位置?

这是到目前为止我的代码:

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); 

} 

回答

1

我会建议保持​​外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); 
    } 
}
+0

不错,但是我认为这个并不会去除叠加层,即标记仍然存在。 – Vonder 2010-03-24 19:50:14

+0

你没有在你的问题中提及任何关于叠加层的内容。 – Jess 2010-03-24 19:55:51

+0

O RLY? “如何更改代码,以便只放置一个标记,当地图再次单击时,它只是改变其位置” – Vonder 2010-03-24 20:03:25

0

您将需要实施某种形式的检查,看是否标志已经放置。一种选择是保存已添加的标记列表,并在调用函数将标记添加到地图之前,在特定点检查标记列表。如果您需要代码示例,请告诉我。

+0

我不是在寻找,但只是一个简单的(删除以前的覆盖功能)。检查标记是否被添加没有意义 - 这是不可能的,因为每个点都有2个数字指定的位置,每个数字有15个小数位,并且您还必须处理数据库。 – Vonder 2010-03-24 19:42:07

0

好了,不打扰,我理解了它自己。我刚刚使用map.clearOverlays();在标记被放置并且解决了问题之前。

相关问题