【问题标题】:Restrict dragging of marker to a particular country限制将标记拖到特定国家
【发布时间】:2018-08-14 10:49:59
【问题描述】:

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

【问题讨论】:

  • 困难的部分可能取决于您需要对边界建模的精确程度。最终,您必须按照@Mauker 的建议,使用 LatLngBounds/Builder 对某个边界的位置进行测试。

标签: android google-maps-markers google-maps-android-api-2 android-studio-3.0


【解决方案1】:

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

看看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)

【讨论】:

    猜你喜欢
    • 2013-07-31
    • 2012-01-13
    • 2016-06-22
    • 2020-10-04
    • 2017-08-05
    • 1970-01-01
    • 2013-11-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多