我可以限制将地图中的标记拖动到特定国家吗?由于我的应用程序的某些功能,我不希望用户将标记拖到印度以外。
是的,您可以限制标记的放置位置。
看看GoogleMap.OnMarkerDragListener。您将看到此接口有三种方法。
-
onMarkerDrag(Marker marker)
-
onMarkerDragEnd(Marker marker)
-
onMarkerDragStart(Marker marker)
首先,您必须收听onMarkerDrag
事件。为此,请将侦听器设置为映射实例,例如:
mMap.setOnMarkerDragListener(new OnMarkerDragListener() {
@Override
public void onMarkerDragStart(Marker marker) {
// ...
}
@Override
public void onMarkerDragEnd(Marker marker) {
// Use this method to detect when the user stopped dragging the marker.
}
@Override
public void onMarkerDrag(Marker marker) {
// Listen to this method to check the marker position.
}
});
每次尝试将标记拖动到某个位置时都会调用该方法。
一旦检测到该事件,您可以通过调用 myMarker.getPosition()
来持续检查标记位置,并将其与某个边界进行比较。请参阅 LatLngBounds 类及其生成器以获取更多信息。
如果标记越过该边界,请通过调用标记 setDraggable 方法使其"不可拖动",如下所示:
myMarker.setDraggable(false)
然后,在 onMarkerDragEnd
方法上,使其再次可拖动,否则用户在越过边界后将无法拖动标记:
myMarker.setDraggable(true)