2017-06-29 133 views
1

我一直在使用Mapbox的Android SDK作为原型,并想知道是否有人知道如何使用不是来自Mapbox服务器的矢量瓷砖贴图。例如,我想要使用Mapbox的Android SDK加载Mapzen或甚至OpenMapTiles矢量磁贴地图,而不是加载Mapbox的默认地图风格。Mapbox Android SDK第三方矢量瓷砖

回答

2

你可以使用MapView#setStyleUrl来做到这一点。

首先在assets/目录中创建mapzen.json这个简单的样式(请务必与真正的关键,以取代YOUR_MAPZEN_API_KEYhttps://mapzen.com/developers/sign_up

{ 
"version": 8, 
"sources": { 
"osm": { 
    "type": "vector", 
    "tiles": ["https://vector.mapzen.com/osm/all/{z}/{x}/{y}.mvt?api_key=[YOUR_MAPZEN_API_KEY]"] 
} 
}, 
"layers": [{ 
    "id": "background", 
    "type": "background", 
    "paint": { 
     "background-color": "#41afa5" 
    } 
}, { 
    "id": "water", 
    "type": "fill", 
    "source": "osm", 
    "source-layer": "water", 
    "filter": ["==", "$type", "Polygon"], 
    "paint": { 
    "fill-color": "#3887be" 
} 
}] 
} 

然后设置自定义样式您MapView

mapView.setStyleUrl("asset://mapzen.json"); 

最后,加载地图:

mapView.getMapAsync(new OnMapReadyCallback() { 
    @Override 
    public void onMapReady(MapboxMap mapboxMap) { 
    //customize map 
    } 
}); 
+0

太棒了!那么由于Mapbox的缘故,必须使用.json文件还是第三方? – jlvmoster

+0

嘿,所以我尝试了这一点,但我使用自定义服务器使用Apache2和PHP来主办一个离线地图。我使用tileserver-php找到[这里](https://github.com/klokantech/tileserver-php)。我使用服务器的http地址替换了'tiles'键中的url:'http://public_ip_address/tileserver/tileserver.php?/index.json?/ mbtiles/united_states_of_america/{z}/{x}/{y} .pbf',但该应用只显示背景颜色。请帮忙! – jlvmoster

+0

Nvm我得到它的工作,谢谢! – jlvmoster