我有一个地图,其中显示了由折线链接的一系列点,该地图是LiteMode,但是在某些情况下,当使用这些点创建LatLngBounds并更新相机时,某些点会遗漏在地图之外。
LatLngBounds.Builder builder = new LatLngBounds.Builder();
for (LatLng latLng : listPoints) {
builder.include(latLng);
}
LatLngBounds bounds = builder.build();
int padding = 0; //offset from edges of the map in pixels
CameraUpdate cu = CameraUpdateFactory.newLatLngBounds(bounds, padding);
map.moveCamera(cu);
我该如何解决?
通过折线我们可以看到,即使更改填充也看不到它们:
因此,可以看到是否删除了LiteMode:
最佳答案
我解决了问题!
根据Google Maps Lite模式documentation说:
相机位置,缩放和动画
支持的?部分地
您可以设置相机目标和缩放,但不能设置倾斜或方位。在精简模式下,缩放级别会四舍五入到最接近的整数。调用GoogleMap.moveCamera()将为您提供另一个静态地图图像。有关设置和操作相机的更多信息,请参阅更改视图。
我的解决方案是从地图上获得可见区域,并进行比较以查看列表中的任何点是否在该区域之外,如果是这样,我应用ZoomOut来缩小相机,以使我的所有点都在可见区域中。
for (LatLng latLng : listPoints) {
if (!(map.getProjection().getVisibleRegion().latLngBounds.contains(latLng))) {
map.moveCamera(CameraUpdateFactory.zoomOut());
break;
}
}
据我了解,问题显然是,例如,如果缩放级别是7.4,则可以通过四舍五入到最接近的整数来正确显示地图上的所有点:7,与LiteMode禁用时相比,丢失了宝贵的.4边距。四舍五入到8。
我不知道这是否是最佳选择,但问题已解决。欢迎任何意见! :)