【问题标题】:android Gmaps v2 : Bounds and max zoom levelandroid Gmaps v2:边界和最大缩放级别
【发布时间】:2013-10-17 17:35:14
【问题描述】:

它是关于 android 和谷歌地图 v2。我想设置有界限的最大缩放级别。 这是我正在使用的方法:

gMap.animateCamera(CameraUpdateFactory.newLatLngBounds(bounds, width, height, padding));

我找到了这个链接,它给了我一个可能的解决方法 Setting max zoom level in google maps android api v2

这是找到的解决方法

gMap.setOnCameraChangeListener(new OnCameraChangeListener() {
    @Override
    public void onCameraChange(CameraPosition position) {
        if (position.zoom > DEFAULT_ZOOM)
            gMap.animateCamera(CameraUpdateFactory.zoomTo(DEFAULT_ZOOM));
    }
});

但是这个解决方案放大到第一个animateCamera定义的缩放级别,然后缩小到DEFAULT_ZOOM if (DEFAULT_ZOOM animateCamera

如何避免这种情况?并且只制作一个animateCamera

提前谢谢

【问题讨论】:

    标签: android google-maps-android-api-2


    【解决方案1】:

    好的,目前我唯一的解决方案是在这里https://stackoverflow.com/a/19343818/1646479

    这里是解决方法:

    private LatLngBounds adjustBoundsForMaxZoomLevel(LatLngBounds bounds) {
      LatLng sw = bounds.southwest;
      LatLng ne = bounds.northeast;
      double deltaLat = Math.abs(sw.latitude - ne.latitude);
      double deltaLon = Math.abs(sw.longitude - ne.longitude);
    
      final double zoomN = 0.005; // minimum zoom coefficient
      if (deltaLat < zoomN) {
         sw = new LatLng(sw.latitude - (zoomN - deltaLat / 2), sw.longitude);
         ne = new LatLng(ne.latitude + (zoomN - deltaLat / 2), ne.longitude);
         bounds = new LatLngBounds(sw, ne);
      }
      else if (deltaLon < zoomN) {
         sw = new LatLng(sw.latitude, sw.longitude - (zoomN - deltaLon / 2));
         ne = new LatLng(ne.latitude, ne.longitude + (zoomN - deltaLon / 2));
         bounds = new LatLngBounds(sw, ne);
      }
    
      return bounds;
    }
    

    但我正在寻找将 android 缩放级别(在我的情况下为 16)转换为 zoomN 的解决方案。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-07-01
      • 1970-01-01
      • 2016-05-19
      • 2011-07-21
      • 2013-02-27
      • 1970-01-01
      相关资源
      最近更新 更多