谷歌地图Android设置可见界限

时间:2015-07-13 10:31:58

标签: android google-maps gis

首先,我对我的英语感到抱歉。 我尝试在谷歌地图android api中设置精确的可见边界。例如,地图将仅显示美国的地区,用户无法滚动地图到加拿大。当你想要链接时,你可以理解我尝试做什么。我想我可以使用CameraChangeListener并获得可见区域,但我无法实现算法。你能帮助我吗 ? http://sehirharitasi.ibb.gov.tr/

1 个答案:

答案 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));
                }                
        }