【发布时间】: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