android - 如何根据标记数动态缩放谷歌地图?
问题描述
我最初为谷歌地图设置了缩放级别,我想根据边界中存在的标记数量动态更改缩放级别。如果初始地图缩放中没有标记,我无法通过更改地图边界来动态更改缩放。
如果边界中没有标记,我将在边界中添加新标记并为相机设置动画以合并新边界,但实际上它正在做的是将地图中心更改为新位置而不是我当前的位置。我不想更改当前位置,我只想缩小地图以包含这些标记。
if(noMarkersInBound){
LatLngBounds.Builder builder = new LatLngBounds.Builder();
builder.include(new LatLng(28.5795431, 77.317322));
builder.include(new LatLng(28.5805431, 77.328322));
LatLngBounds bounds = builder.build();
CameraUpdate cameraUpdate = CameraUpdateFactory.newLatLngBounds(bounds,0);
}
此方法CameraUpdateFactory.newLatLngBounds
是将当前位置更改为该边界,而不是缩小地图。
任何人都可以帮助或告诉我实现这一目标的方法。
解决方案
我不确定我是否理解正确,但如果您只想设置缩放级别,那么就这样做:
public static CameraUpdate zoomTo (float zoom) 返回一个将相机视点移动到特定缩放级别的 CameraUpdate。
参数 zoom 所需的缩放级别,范围为 2.0 到 21.0。低于此范围的值设置为 2.0,高于此范围的值设置为 21.0。增加值以放大。并非所有区域都具有最大缩放级别的图块。
public void moveCamera (CameraUpdate update) 根据更新中定义的指令重新定位相机。移动是瞬时的,随后的 getCameraPosition() 将反映新的位置。有关一组更新,请参阅 CameraUpdateFactory。
参数更新 应应用于相机的更改。
推荐阅读
- python-3.x - 将矩阵的每个元素乘以向量(或数组)
- tensorflow - 加载 tensorflow.keras 模型时如何加载损失函数?
- html - 是否可以从 for 循环中使用 Alpine.js 在 img 中的 src 中注入变量?
- swift - 将 SwiftUI 视图设置为始终保持一种尺寸
- php - PHP为不同的输入提供相同的输出
- javascript - 从 Electron ipcRenderer.invoke() 访问返回对象/值
- javascript - Node/Electron 中的暗模式检测
- excel - 我的 Excel 公式不起作用,我在 Excel 365 中使用了 SUMIF
- javascript - 如何正确地将管理员用户添加到数据库?
- nestjs - 在数组 TypeOrm 中查找