感謝Mapbox,帶來了一整套完整的地圖方案。
你可以把你的地圖放在Mapbox的網站上。也可以使用他們提供的開源軟件自己架設地圖服務。
Mapbox的地圖方案包括web,ios和android。 不過android目前屬於不成熟階段。但是相信很快就會成熟起來。
一個比較舒服的地圖自制流程如下:
Qgis 處理各種GIS數據,導出為shp或GeoJson等格式 ==> TileMill 生成 .mbtile ==> tilestream 在線地圖服務 或 直接由Android/IOS SDK 渲染地圖。
QGIS的使用推薦教程:http://www.qgistutorials.com/en/
TileMill教程:https://www.mapbox.com/tilemill/docs/crashcourse/introduction/
TileStream的資料稍微少些,這里重點講下。
首先,假設你在TileMill教程中導出的地圖文件為abc.mbtile
存放在/Users/fangjian/Documents/MapBox/export
假設你已經安裝了nodejs ,然后安裝tilestream.
sudo npm install -g tilestream
裝好以后啟動服務
tilestream --tiles=/Users/fangjian/Documents/MapBox/export
更多設置參見: http://linuxdev.dk/articles/tilestream-openlayers-and-drupal-7
這個時候訪問:http://localhost:8888
已經可以看到地圖了。點地圖圖標進入到地圖頁面后,點“i"圖標可以看到這個地圖服務的網址。如:http://localhost:8888/v2/abc/{z}/{x}/{y}.png
下面把這個范例拿來用:https://www.mapbox.com/mapbox.js/example/v1.0.0/external-layers/
保存為mapbox.html
其中的網址部分改成:var stamenLayer = L.tileLayer('http://localhost:8888/v2/abc/{z}/{x}/{y}.png'
打開mapbox.html,就可以看到地圖了。
如果使用mapbox.js
對應的tilejson為 http://localhost:8888/v2/abc.json
如果想解包為純靜態的圖片,用mbutil https://github.com/mapbox/mbutil
sudo easy_install mbutil
mb-util abc.mbtiles abc
abc/metadata.json為tilejson文件
abc/z/x/y.png是瓦片文件
abc/z/x/y.grid.json是UTFGRID文件
進一步了解詳見 http://blog.thematicmapping.org/2012/11/exploring-mapbox-stack-mbtiles-tilejson.html