首先,我对我的英语感到抱歉。 我尝试在谷歌地图android api中设置精确的可见边界。例如,地图将仅显示美国的地区,用户无法滚动地图到加拿大。当你想要链接时,你可以理解我尝试做什么。我想我可以使用CameraChangeListener并获得可见区域,但我无法实现算法。你能帮助我吗 ? http://sehirharitasi.ibb.gov.tr/
答案 0 :(得分:1)
这不像你的链接那么简单和好,但它可以起作用:
//When you setup the map:
map.setOnCameraChangeListener(new OnCameraChangeListener() {
@Override
public void onCameraChange(CameraPosition cameraPosition) {
checkBounds();
}
});
CheckBounds函数可以检查可见区域是否在允许区域内:
public void checkBounds() {
//non ricostruire allowedbounds ogni volta, sono sempre gli stessi, fatti il build nell'onCreate
LatLngBounds actualVisibleBounds = map.getProjection().getVisibleRegion().latLngBounds;
if (allowedBounds.contains(actualVisibleBounds)){
return
}else{
map.animateCamera(CameraUpdateFactory.newLatLngBounds(allowedBounds));
}
}
或者您可以使用视口的中心并检查是否在允许的区域内(以允许边界缩放)
public void checkBounds() {
LatLngBounds.Builder builder = new LatLngBounds.Builder();
builder.include(northeast);
builder.include(southwest);
final LatLngBounds allowedBounds = builder.build();
LatLngBounds centro = map.getProjection().getVisibleRegion().latLngBounds;
if (allowedBounds.contains(centro.getCenter()))
return;
else {
map.animateCamera(CameraUpdateFactory.newLatLngZoom(defaultLatLng, zoomLevel));
}
}