Google 地图 Android 设置可见边界

Google Maps Android Set Visible Bounds

首先我对我的英语感到抱歉。 我尝试在 google 地图 android api 中设置精确的可见范围。例如,地图将只显示美国地区,用户无法将地图滚动到加拿大。当您查看 link 时,您可以理解我试图 do.I 认为我可以使用 CameraChangeListener 并获得可见区域来做到这一点,但我无法实现算法。你能帮助我吗 ? http://sehirharitasi.ibb.gov.tr/

它不像您的 link 那样简单好用,但它是可行的:

//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));
                }                
        }