Notes on Developing Interactive Maps with JavaScript on the Web

JavaScript 互動地圖套件

Leaflet

Leaflet 是一套開源的互動地圖 JavaScript library,它有合理的大小(38kb,未壓縮),廣泛的瀏覽器支援(包括 IE 7–11),已設計調校好的基本地圖 UI 元件(地圖控制、Markers、Popups、互動動畫)。它可以介接不同地圖底圖的 API(主要支援點陣圖磚的底圖)。

要快速瀏覽這個 library 可以做到什麼,可以看:

Mapbox.js

Mapbox.js 是一套以 Leaflet 為基礎的開源 library,它和 Leaflet 的主要差別在於,它的地圖底圖僅支援 TileJSON 或是使用 Mapbox 的底圖 API ,以及它的 UI 元件是使用 Mapbox 所設計的樣式。

要快速瀏覽這個 library 可以做到什麼,可以看:

Mapbox GL JS

Mapbox GL JS 也是一個開源互動地圖 library。它和前兩者的差別在於,它是使用 WebGL 來 render 地圖和地圖上的圖層,因此對於使用向量圖磚(vector tilesets)類型的地圖底圖有較好的支援,並且有較好的 2D、3D 動態效果。缺點是 IE 和 Edge 瀏覽器對 WebGL 支援度較差,開發者必須手動提供使用者 fallback solution。

另外一個要注意的是,它只能使用符合 Mapbox Style Specification 的地圖底圖。

要快速瀏覽這個 library 可以做到什麼,可以看:

地圖底圖哪裡找

Tilesets Provider Services

用來搭配 LeafletMapbox.js 使用的免費點陣圖磚底圖,已經有人整理在 Leaflet-providers 這個 plugin 裡面。但其實使用這些地圖不一定要裝 plugin,它的 preview 裡面有提供使用 pure JavaScript 的 url temmplate。

而符合 Mapbox Style Specification 的地圖底圖有以下兩家服務可以使用,都是有少量免費 quota,超過就要加錢:

  • Mapbox非商業使用每個月有 5 萬免費 map views 。網站有提供線上介面可以編輯地圖內容。

  • MapTiler Cloud:只要符合官網的使用條款,每個月 10 萬 requests 以內免費。(request 計算方式見 FAQ)網站有提供線上介面可以編輯地圖內容。

Host OpenMapTiles by Yourself

OpenMapTiles 計畫已經把 OpenStreetMap 圖資整理成 vector tiles ,開放給大家建置自己的地圖。但他的網站規劃不太好懂,不容易找到到底該如何使用。從 openmaptiles.comOpenMapTiles Documentation 兩個頁面可以找到,有三種軟體可以用來將 OpenMapTiles 資料架設成 map server,包括:

而在授權方面,Open Street Map (OSM) 底圖,如果符合官網使用條款上列出的三種條件之一,是可以免費使用的。而如果是要衛星圖和地形陰影檔案,則有一次全包的 package,或隨選付費這兩種選擇,在進入選擇地圖的畫面後可以看到價格。

GeoJSON

GeoJSON 是目前在網頁使用上較為通用的一個地理資訊資料格式,它是以 JSON 檔案格式為基礎,除了座標資料外,也可以儲存自訂的 properties。關於 GeoJSON 的格式說明,建議可以直接看 SPEC

而在操作和計算地理資訊資料方面,有一個好用的 library,Turf.js。可以把它看成是地理資訊資料的 lodash(工具箱)。