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

Android 使谷歌地图标记在区域/区域内可拖动?,android,google-maps,google-maps-markers,google-maps-android-api-2,google-maps-api-2,Android,Google Maps,Google Maps Markers,Google Maps Android Api 2,Google Maps Api 2,我正在根据我的位置创建标记,我想使标记在距离该位置1公里的范围内可拖动 所以,基本上我想知道如何使一个标记只在某个区域内拖动,而不是整个地图 谢谢您必须定义边界并检查新位置是否在标记的onDragListener中的边界之外:如果新位置在边界之外,您可以将标记重置为最后一个有效位置或执行任何您想要的操作 要匹配标记是否在边界内,必须使用对象的方法contains 大概是这样的: LatLngBounds bounds; LatLngBounds.Builder builder = new Lat

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

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

谢谢

您必须定义边界并检查新位置是否在标记的
onDragListener
中的边界之外:如果新位置在边界之外,您可以将标记重置为最后一个有效位置或执行任何您想要的操作

要匹配标记是否在边界内,必须使用对象的方法
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
        }

    }
});

如果解决方案正确,请将其设置为已接受。