【问题标题】:JAVA Google Maps API : set boundaries depending on zoom valueJAVA Google Maps API:根据缩放值设置边界
【发布时间】:2021-11-24 09:11:11
【问题描述】:

每次缩放值更改时,我都会尝试更新相机边界。检查文档后,我发现可以使用 LatLngBounds Including(LatLng point) 方法扩展当前边界,该方法返回包含 LatLng 点的最小 LatLngBounds。所以我做了这个代码:

// I save the initial zoom value and I test if it changes
double zoom = mMap.getCameraPosition().zoom;
        if (zoom!= mMap.getCameraPosition().zoom){
// I create a new Bounds which is proportional to the difference of the previous and the new zoom value by including a new point in the boundaries
            LatLng chgtBounds = new LatLng(ParisBounds.getCenter().latitude+(mMap.getCameraPosition().zoom-zoom)*0.001,ParisBounds.getCenter().longitude+(mMap.getCameraPosition().zoom-zoom)*0.001);
            zoom = mMap.getCameraPosition().zoom;
// I apply this new bounds on the map and it automatically delete the previous one
            mMap.setLatLngBoundsForCameraTarget(ParisBounds.including(chgtBounds));
         }

我创建了一个新变量来保存缩放值,以了解用户何时放大地图。当他这样做时,通过将前一个边界增加缩放值的千分之一来创建一个新的边界(不确定这是正确的分数,但想法是相同的)。但是,我认为这些行只在应用程序启动时执行一次。有没有办法永远执行它们? 我尝试了while(true),但应用程序根本没有启动。

【问题讨论】:

  • 似乎您想要 当前 缩放级别,而不是最大可用缩放。获取当前缩放级别 mMap.getCameraPosition().zoom: developers.google.com/maps/documentation/android-sdk/reference/… 。另请注意,缩放值会随着放大而变大 - 不确定这是否是您对边界的“自动缩放”的意图。
  • 谢谢,我不知道这种方法更好。我的目标是当用户放大地图(缩放值增加)时,相机可以移动的区域越来越大,以确保整个区域都可见。但是我发现我需要用新的缩放值减去以前的缩放值,否则边界会越来越大。

标签: java android-studio google-maps


【解决方案1】:

当前缩放级别来自:

mMap.getCameraPosition().zoom

docs

最大缩放(在 OP 代码中使用)是基于当前相机位置和正在使用的图块类型的最大可能缩放。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-03-18
    • 2015-04-14
    • 2011-04-16
    • 1970-01-01
    • 2011-02-19
    • 2013-12-26
    • 1970-01-01
    • 2018-10-02
    相关资源
    最近更新 更多