1
我一直在使用Mapbox的Android SDK作为原型,并想知道是否有人知道如何使用不是来自Mapbox服务器的矢量瓷砖贴图。例如,我想要使用Mapbox的Android SDK加载Mapzen或甚至OpenMapTiles矢量磁贴地图,而不是加载Mapbox的默认地图风格。Mapbox Android SDK第三方矢量瓷砖
我一直在使用Mapbox的Android SDK作为原型,并想知道是否有人知道如何使用不是来自Mapbox服务器的矢量瓷砖贴图。例如,我想要使用Mapbox的Android SDK加载Mapzen或甚至OpenMapTiles矢量磁贴地图,而不是加载Mapbox的默认地图风格。Mapbox Android SDK第三方矢量瓷砖
你可以使用MapView#setStyleUrl
来做到这一点。
首先在assets/
目录中创建mapzen.json
这个简单的样式(请务必与真正的关键,以取代YOUR_MAPZEN_API_KEY
)https://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
}
});
太棒了!那么由于Mapbox的缘故,必须使用.json文件还是第三方? – jlvmoster
嘿,所以我尝试了这一点,但我使用自定义服务器使用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
Nvm我得到它的工作,谢谢! – jlvmoster