如何在有限的区域内拖放标记?例如,圆的半径为20米。用户只能在圈内拖放。这是我尝试过的代码。
map.setOnMapClickListener(new GoogleMap.OnMapClickListener() {
@Override
public void onMapClick(LatLng latLng) {
mymarker.setPosition(latLng);
mGoogleMap.animateCamera(CameraUpdateFactory.newLatLng(latLng));
}
});
map.setOnMarkerDragListener(new GoogleMap.OnMarkerDragListener() {
@Override
public void onMarkerDragStart(Marker arg0) {
}
@SuppressWarnings("unchecked")
@Override
public void onMarkerDragEnd(Marker arg0) {
Log.d("System out", "onMarkerDragEnd...");
map.animateCamera(CameraUpdateFactory.newLatLng(arg0.getPosition()));
}
@Override
public void onMarkerDrag(Marker arg0) {
}
});
答案 0 :(得分:1)
拖动开始时,您可以将地图移动到要限制拖动的边界。并禁用地图手势以防止地图移动。如果你有缩放或我的位置控制,他们也可以在这里禁用。拖动结束后,您可以将它们重新启用。
map.setOnMarkerDragListener(new GoogleMap.OnMarkerDragListener() {
@Override
public void onMarkerDragStart(Marker marker) {
map.animateCamera(CameraUpdateFactory.newLatLngZoom(marker.getPosition(), 15));
map.getUiSettings().setAllGesturesEnabled(false);
}
@Override
public void onMarkerDrag(Marker marker) {}
@Override
public void onMarkerDragEnd(Marker marker) {
map.getUiSettings().setAllGesturesEnabled(true);
}
});
要按中心和半径获取LatLngBounds
,您可以使用this answer。