2017-02-03 84 views
1

我試圖使用資產中的sqlite瓷磚離線地圖。 我將sqlite文件移動到osmdroid文件夾,但它只加載地圖的幾個部分。從sqlite瓷磚OSMDroid灰色區域

我使用MOBAC創建了我的sqlite文件,我嘗試使用相同或不同的圖層選擇不同的縮放級別,並強制重繪正方形爲PNG。

該地圖是使用下面的代碼創建:

map = (MapView) findViewById(R.id.mapview); 
    map.setTileSource(TileSourceFactory.MAPNIK); 
    MyLocationNewOverlay mLocationOverlay = new MyLocationNewOverlay(new GpsMyLocationProvider(StepActivity.this), map); 
    mLocationOverlay.enableMyLocation(); 
    map.getOverlays().add(mLocationOverlay); 
    map.setBuiltInZoomControls(true); 
    map.getController().setZoom(15); 
    map.setClickable(false); 
    map.setUseDataConnection(false); 
    map.setMinZoomLevel(15); 
    map.setMaxZoomLevel(18); 

但當地圖加載(需要一段時間我不知道這是否是正常的)。 地圖大多數都是灰色的,我必須放大/縮小几次來加載某些部分。

我不明白如何加載我所有的可見地圖。

回答

1

在您的示例中,MOBAC中使用的圖塊源的「名稱」必須與「MAPNIK」匹配。您可以通過使用sqlite3命令行工具或使用適用於Firefox的sqlite管理器插件來驗證它的設置。

select * from tiles應該這樣做

你的示例代碼也將縮放級別設置爲15。你確定你的選擇MOBAC縮放級別15?當應用程序啓動到您知道位於數據庫中的位置時,可能會幫助您設置默認經緯度。包含縮放級別0-9左右也是有幫助的,因爲這些縮放級別的內容並不太大,它可以幫助您找出在哪裏。

延遲可能是從啓動時從資產複製到/ sdcard。您還需要確保在創建地圖視圖(setContentView)之前,osmdroid可以找到該數據庫。如果這不是一個選項,你也可以通過mapView.setTileProvider(new MapTileProviderBasic(context));

+1

複製動作完成後的地圖磁貼供應商reset'mapView.setTileProvider(new MapTileProviderBasic(context));'做這個工作!非常感謝你。 setTileProvider到底是什麼?我沒有找到很多關於它的信息。 – Wiicolas

+0

圖塊提供程序執行所有圖塊加載並聚合用於查找顯示(在線,離線,緩存等)的不同機制。當它初始化時,它會掃描離線的瓷磚檔案。因此反彈會導致掃描發射 – spy