【问题标题】:Make Google Maps Markers draggable within region/area?使谷歌地图标记在区域/区域内可拖动?
【发布时间】:2015-10-01 03:34:01
【问题描述】:

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

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

谢谢

【问题讨论】:

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


    【解决方案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
            }
    
        }
    });
    

    【讨论】:

    • 如果解决方案正确请设置为接受。
    猜你喜欢
    • 2016-12-10
    • 2013-11-15
    • 1970-01-01
    • 2018-03-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多