使谷歌地图标记在区域/区域内可拖动?

Posted

技术标签:

【中文标题】使谷歌地图标记在区域/区域内可拖动?【英文标题】:Make Google Maps Markers draggable within region/area? 【发布时间】:2015-10-01 03:34:01 【问题描述】:

我正在根据我的位置创建标记,我想让标记在该位置的 1 公里范围内可拖动。

所以,基本上我想知道如何使标记只能在某个区域/区域内而不是整个地图内拖动。

谢谢

【问题讨论】:

【参考方案1】:

您必须定义 bounds 并检查新位置是否超出标记的onDragListener 的范围:如果新位置超出范围,您可以将标记重置为最后一个有效的职位或做任何你想做的事。

要匹配标记是否在边界内,您必须使用LatLngBounds 对象的contains 方法。

类似这样的:

LatLngBounds bounds;
LatLngBounds.Builder builder = new LatLngBounds.Builder();

// You construct your bounds in a way like this
builder.include(new LatLng(latitude1, longitude1));
builder.include(new LatLng(latitude2, longitude2));
builder.include(new LatLng(latitude3, longitude3));
// etc

bounds = builder.build();

googleMap.setOnMarkerDragListener(new GoogleMap.OnMarkerDragListener() 
    @Override
    public void onMarkerDragStart(Marker marker) 

    

    @Override
    public void onMarkerDrag(Marker marker) 

    

    @Override
    public void onMarkerDragEnd(Marker marker) 

        if (bounds.contains(marker.getPosition())) 
            // cast your spell
         else 
            // you can't drag here
        

    
);

【讨论】:

如果解决方案正确请设置为接受。

以上是关于使谷歌地图标记在区域/区域内可拖动?的主要内容,如果未能解决你的问题,请参考以下文章

谷歌地图在 APEX 地区消失

将可拖动标记与折线谷歌地图绑定

我们如何在谷歌地图中为多边形应用可编辑标记

谷歌地图 v3 可拖动标记

如何在同一张地图上使用带有多个标记的谷歌地图 API

带有来自服务器的数字标记的谷歌地图