回答

1

你必须定义并检查新的位置是在标记的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 
     } 

    } 
}); 
+0

如果解决方案是正确的,请设置为接受。 –