2015-10-28 51 views
6

我對MapBox中的瓷磚有些困惑。據我瞭解,瓦片是一個地圖的小點,就像拼圖遊戲中的一樣。MapBox MB瓷磚vs矢量瓷磚

MBTiles是圖像,但它們連接到數據庫讀取數據e讓交互成爲可能。所以如果我移動鼠標,我可以顯示光標下的圖層細節。

矢量瓷磚存儲矢量中的所有數據,它們僅用於快速渲染圖像。與這些數據的交互是不可能的。

我錯了嗎?

現在,我看到有MBTiles的工具TileMill,矢量瓷磚有MapBox Studio Classic。我猜他們是爲了不同的目的,第一個是交互式地圖,後者是爲了快速渲染。 那麼....爲什麼TileMill是not anymore supported,贊成MBStudio? MBStudio可以製作交互式地圖嗎?

謝謝

回答

16

這是一個很好的問題!

mbtile是一種文件類型,可以包含光柵或矢量圖塊。想想它就像一個Adobe Illustrator .ai文件 - 它可以包含矢量或光柵數據。柵格圖塊和矢量圖塊都可以採用mbtile格式。

使用TileMill,您的矢量數據(shapefile,CSV等)與CartoCSS樣式相結合,並傳遞給Mapnik以生成一堆平鋪圖像。然後,你可以存儲你的瓷磚,並通過瓷磚服務器將它們提供給Web地圖。藉助Mapbox Studio Classic,您可以將數據轉換爲矢量圖塊並創建CartoCSS樣式來設置數據的樣式,但直到通過瀏覽器請求地圖時纔會創建圖像切片。最終,地圖上的輸出是相同的 - 柵格圖塊的網格。

您在TileMill中使用光柵圖塊創建的交互性通過UTFGrid發生。這是位於圖像切片下方的無形柵格圖層,並將交互添加到特定位置。交互性實際上並不與任何單獨的功能相關 - 它只與您的功能位於相同的位置。這在Mapbox Studio Classic中也是可行的,因爲地圖中的輸出也將是柵格圖塊的網格。您可以在style quickstart guide中閱讀更多關於如何在Mapbox Studio Classic中執行此操作的信息。

所以要回答你的問題,遷移到Mapbox Studio Classic就是要利用矢量圖塊。它們比光柵圖像塊小很多,並且可以隨時進行樣式設置,因此,例如,您不必存儲兩組獨立的圖像以適應視網膜屏幕。這也意味着您可以對同一個矢量數據實時應用多種樣式,這意味着您無需爲每種樣式或每次小的更改都重新生成一整套圖像。

+1

是否可以在一個樣式項目中將這種交互添加到多個圖層?或者我應該創建多個樣式,每個樣式都帶有交互式UTFGrid,並且將它們作爲單獨的圖層添加到地圖中? – DeLac

+0

FWIW,'mbtiles'規範(截止撰寫 - v1.2)僅支持柵格數據。但忽視規範有一個普遍的習慣。並在那裏填充矢量數據。數據通常採用壓縮Mapbox矢量圖的形式。 – Mohan

0

如果元數據表包含記錄格式= pbf,那麼mbtiles是矢量圖塊而不是光柵。 mbtiles SQLite數據庫可以是Tiles表和tile_data blob字段中的矢量圖塊的容器。由Google開發。PBF -Protocol Buffers - protobuf(https://github.com/google/protobuf - 用於序列化結構化數據的語言中立平臺中性機制)。像MapBox Studio這樣的工具從GIS矢量數據和數據庫中構建矢量圖塊