gpt4 book ai didi

java - 如何在有限区域内拖放标记?

转载 作者:行者123 更新时间:2023-12-02 13:14:28 24 4
gpt4 key购买 nike

如何在有限区域内拖放标记?例如,一个圆的半径为 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) {
}
});

最佳答案

当拖动开始时,您可以将 map 移动到要限制拖动的范围。并禁用 map 手势以防止 map 移动。如果您有缩放或我的位置控件,也可以在此处禁用它们。拖动结束后,您可以重新启用它们。

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

关于java - 如何在有限区域内拖放标记?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43824880/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com