使谷歌地图标记在区域/区域内可拖动?
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
);
【讨论】:
如果解决方案正确请设置为接受。以上是关于使谷歌地图标记在区域/区域内可拖动?的主要内容,如果未能解决你的问题,请参考以下文章