2

我正在使用 GoogleMaps,我有 2 个或更多标记,它们是可拖动的。如果它们在附近,我想捕捉 2 个标记并将它们合并为 1。这可能吗?

有人可以给我指点..我怎么能意识到这一点?

4

1 回答 1

2

您需要处理GMarker对象上的拖动事件。诀窍是当您检测到您离另一个标记足够近以将它们捕捉在一起时您会做什么。我对此进行了一些尝试,并认为隐藏当前拖动的标记可能是一个不错的方法。

GEvent.addListener(marker, "drag", function(point) {

    // iterate over your points and for each otherPoint...
    if (near (point, otherPoint))
    {
        // hide this marker
        marker.hide ();

        // move nearby marker to indicate merge?

        // then delete the dragged marker on the dragend (if it was merged)
    }
}

不是一个完全优雅的解决方案,但它可能适合您的目的。

编辑:我想知道您是否正在寻找检查附近点的代码,所以我更新了我的示例来做到这一点:

function near (point1, point2)
{
    sw = new GLatLng(point2.lat() - 0.005, point2.lng() - 0.005);
    ne = new GLatLng(point2.lat() + 0.005, point2.lng() + 0.005);
    var bounds = new GLatLngBounds(sw, ne);
    if (bounds.contains (point1))
        return true;

    return false;
}
于 2009-09-28T00:24:11.643 回答