限制将标记拖动到特定国家/地区

问题描述 投票:0回答:1

我可以限制将地图中的标记拖动到特定国家/地区吗?由于我的应用程序的一些功能,我不希望用户将标记拖到印度之外。

android google-maps-markers google-maps-android-api-2 android-studio-3.0
1个回答
0
投票

是的,您可以限制标记的放置位置。

看看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类及其Builder

如果标记越过该边界,则通过调用标记setDraggable方法使其“无法打开”,如下所示:

myMarker.setDraggable(false)

然后,在onMarkerDragEnd方法上,再次使其可拖动,否则用户将无法在跨越边界后拖动标记:

myMarker.setDraggable(true)
© www.soinside.com 2019 - 2024. All rights reserved.