2016-12-24 30 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

相關問題