我有一张地图,其中我展示了一系列由Polylines链接的点,地图是LiteMode,但在某些情况下,当使用这些点创建LatLngBounds并更新相机时,某些点会被遗漏在地图之外。
uniqid()
我该如何解决?
通过折线我们甚至可以通过更改 pading 来看到它们不在视线范围内: 因此可以看出我是否删除了LiteMode:
答案 0 :(得分:5)
我解决了这个问题! 根据Google Maps Lite模式documentation说:
相机位置,缩放和动画
支持的?天色
您可以设置摄像机目标和缩放,但不能设置倾斜或方位。 缩放级别在精简模式中四舍五入到最接近的整数。 调用GoogleMap.moveCamera()将为您提供另一个静态地图图像。有关设置和操作摄像机的更多信息,请参阅更改视图。
我的解决方案是从地图中获取可见区域并进行比较以查看列表中的任何点是否在该区域之外,如果是这样,我应用ZoomOut缩小相机以使我的所有点都在可见区域。
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);
显然我理解的问题是,如果缩放级别是例如 7.4 ,则通过将其四舍五入到最接近的整数来正确显示地图上的所有点: 7 ,一个有价值的 .4 边距丢失的时间比LiteMode这个禁用的四舍五入为8。
我不知道它是否是最佳选择,但问题已经解决。欢迎任何意见! :)