Вы должны определить границы и проверить, если новое положение находится за пределами в onDragListener
маркера: если новое положение находится за пределами вы можете сбросить маркер до последнего действительное положение или делать то, что вы хотите.
Чтобы соответствовать, если маркер находится или находится внутри границ, вы должны использовать метод contains
объекта LatLngBounds.
Что-то вроде этого:
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
}
}
});
Если решение является правильным, пожалуйста, установите его как принято. –