2016-12-24 45 views
1

我有一张地图,其中显示由多段线链接的一系列点,地图为LiteMode,但在某些情况下创建具有这些点的LatLngBounds并更新相机一些点不在地图中。LatLngBounds或CameraUpdate不会在地图精简模式中显示所有点

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); 

我该如何解决这个问题?

通过多段线,我们可以看到,他们都看不见了,甚至通过改变pading1 因此可以看出,如果我删除LiteMode: 2]

回答

2

我解决了这个问题!
根据谷歌地图精简版模式documentation说:

摄像头位置,缩放和动画
支持?部分
您可以设置相机目标和缩放,但不能设置倾斜或方位。 缩放级别在精简模式下四舍五入为最接近的整数。调用GoogleMap.moveCamera()将为您提供另一个静态地图图像。有关设置和操作相机的更多信息,请参阅更改视图。

我的解决办法是从地图上得到可见区域比较,看看是否有我的名单上的点是该地区以外,如果是的话,我申请缩小(ZoomOut)以足够的缩小相机,使我的所有的点在可见区域。

for (LatLng latLng : listPoints) { 
       if (!(map.getProjection().getVisibleRegion().latLngBounds.contains(latLng))) { 
        map.moveCamera(CameraUpdateFactory.zoomOut()); 
        break; 
       } 
      } 

显然问题我理解的是,如果缩放级别是例如7.4正确通过它四舍五入到最接近的整数显示在地图上的所有点:,一个有价值.4保证金损失比LiteMode这个禁用被舍入为8.

我不知道它是否是最优选项,但问题已解决。任何意见都欢迎! :)

+0

鉴于限制您的解决方案是最好的选择。由于这解决了你的问题,你应该接受你自己的答案,这样可以帮助其他人 – antonio