Osmdroid 5.6, offline MBTiles -
i'm trying use mbtiles offline osmdroid,
i took code sample here https://github.com/osmdroid/osmdroid/blob/master/openstreetmapviewer/src/main/java/org/osmdroid/samplefragments/tileproviders/sampleofflineonly.java
but empty map shown, there problem code?
my code is:
public class osmdroid extends appcompatactivity { private mapview mapview; @override protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.activity_osmdroid); mapview = (mapview) findviewbyid(r.id.map); string name = "map.mbtiles"; file f = new file(environment.getexternalstoragedirectory() + "/osmdroid", name); if (f.exists()) { try { //ok found file support , have driver format, demo, we'll use first 1 //create offline tile provider, offline file archives //again using first file offlinetileprovider tileprovider = new offlinetileprovider(new simpleregisterreceiver(this), new file[]{f}); //tell osmdroid use provider instead of default rig (asserts, cache, files/archives, online mapview.settileprovider(tileprovider); //this bit enables find out tiles sources available. note, action may take time run //and should ran asynchronously. we've put inline simplicity string source = ""; iarchivefile[] archives = tileprovider.getarchives(); if (archives.length > 0) { //cheating bit here, first archive file , ask tile sources names contains set<string> tilesources = archives[0].gettilesources(); //presumably, great place tell users tiles sources available if (!tilesources.isempty()) { //ok good, found @ least 1 tile source, create basic file based tile source using name //and set it. if don't set it, osmdroid attempt use default source, "mapnik", //which won't match offline tile source, unless it's mapnik source = tilesources.iterator().next(); mapview.settilesource(filebasedtilesource.getsource(source)); } else { mapview.settilesource(tilesourcefactory.default_tile_source); } } else { mapview.settilesource(tilesourcefactory.default_tile_source); } mapview.setusedataconnection(false); mapview.setbuiltinzoomcontrols(true); imapcontroller mapcontroller = mapview.getcontroller(); mapcontroller.setzoom(10); geopoint startpt = new geopoint(61.5797,51.5997); mapcontroller.setcenter(startpt); mapview.invalidate(); return; } catch (exception ex) { ex.printstacktrace(); } } } } mbtilesfilearchive gettilesources returns empty string, here implementation:
public set<string> gettilesources(){ //the mbtiles spec doesn't store source information in it, can't return return collections.empty_set; }
Comments
Post a Comment