Leaflet 0.7 版本發佈、MapBox 以及未來計畫
Leaflet 0.7 發佈了 — 支援 IE11 的觸控功能、可放大圖磚以及大量的其他改進和錯誤修復!同時,我已全職加入 MapBox 團隊…
經過另外 5 個月的積極開發,並有 眾多貢獻者參與,我很開心地宣布 Leaflet 0.7 穩定版的發佈。
這是一個以錯誤修復為主的版本 — 隨著 Leaflet 在功能方面變得越來越穩定,重點將從新功能轉向穩定性、易用性和 API 改進。我也將一些計劃中的深度重構(我將在稍後的文章中談到)推遲到 0.7 發佈之後,以便在發佈週期的開始就完成這些高風險的工作,留出充足的時間來捕捉錯誤和可能無意中破壞現有應用程式的不相容變更。
加入 MapBox
另外一個消息,我已全職加入 MapBox 團隊。這對我來說非常令人興奮,因為這是我夢寐以求的工作 — MapBox 以其所有出色的工作永遠改變了互動式地圖的世界,他們擁有世界上最偉大的地理繪圖工程師和設計師一起工作,每天都在挑戰可能的界限並激勵他人。
對於 Leaflet 而言,這只能意味著非常好的事情 — 更多時間用於 Leaflet 的開發、更多的熱情、更多的樂趣、更多瘋狂的地圖實驗(例如 這個),以及大量的學習。我現在是有史以來最快樂的地圖極客之一。敬請期待更多精彩內容!
0.7 的變更
您可以查看 詳細的變更記錄,了解最近幾個月為 0.7 版本所做的所有工作(大約 90 項改進和錯誤修復),但我想提一些重點
- 新增了將圖磚放大到更高縮放級別的功能(例如,當來源最大縮放級別為 18 時,擁有縮放級別 19-20)。
- 新增了對 IE11 觸控裝置的支援。MS 出乎意料地破壞了開發人員預覽版和最終 IE11 發布版之間的指標 API 相容性,我們最終重寫了相當多的程式碼,以確保所有 IE 版本(包括桌面和行動裝置)都能順利運作,同時也修復了一些 IE10 的錯誤。
- 正式放棄對 IE6 的支援(反正沒人在乎),並清理/修復了 IE7-8 的樣式。
- 取消了包含 Leaflet 時需要使用 IE 條件註解的需求,使程式碼片段變得更加簡單 — 所有 IE7/8 特定的樣式都得到了簡化並移動到了主要的
leaflet.css
檔案中。 - 修復了一個不明顯的 iOS7 記憶體洩漏問題,當您嘗試建立數千個圖層(例如用於群聚的標記)時,該問題會導致 Safari 崩潰。我仍然不明白為什麼會發生這種情況,但我們設法用一些技巧修復了它。
- 修復了一個嚴重的 Android 版 Chrome 錯誤,該錯誤導致在某些裝置上縮放後圖磚消失。
- 刪除了 TileLayer 實作中的一些與地球相關的硬編碼,以便讓 Proj4Leaflet 等外掛更容易處理複雜的投影,而無需使用可怕的駭客技巧。0.8 版本將繼續朝著這個方向努力。
- 提高了在具有大量元素的複雜頁面上的平移效能 — 我們發現將不同的游標設定到
document
(用於「抓取」的手)等簡單的操作會在某些瀏覽器(特別是 Chrome)上導致明顯的效能下降。 - 變更了 maxBounds 的運作方式,不再強制從它衍生出
minZoom
,而是限制在較低縮放級別上的平移,並使用一些技巧使其在平移慣性或偏移縮放等方面更好地運作。
0.8 的計畫
在發布 0.7 之後,我希望立即開始對 Leaflet 進行幾項大型的重構工作 — 我已經將它們擱置了太久,它們將對外掛和基於 Leaflet 的 API 作者非常有益。其中一些已經在進行中。
- 重構圖層架構。目前,在不同圖層(地圖、標記、向量圖層等)的實作中存在大量邏輯重複,特別是事件處理、縮放動畫邏輯、zIndex 和窗格處理(什麼顯示在什麼之上等)。使程式碼一致、更通用並在不同圖層之間共享,將使其更容易自訂圖層並製作您自己的圖層(例如,整合 d3 等)。
- 將龐大的 TileLayer 實作分割為 GridLayer 和 TileLayer,分離影像圖磚相關邏輯和網格邏輯,這將使其他類似網格的圖層實作(例如,UTFGrid 互動或圖磚化的 GeoJSON)更加簡單。
- 重構縮放動畫邏輯,以實現期待已久的 Easey 式動畫(點之間的縮放平移)。
- 重構投影程式碼,以使其更容易設定平面地圖和怪異的投影,並自訂 Leaflet 處理它們的方式。
- 重構向量圖層程式碼,以使其可以在同一地圖上的不同圖層使用不同的渲染後端(Canvas、SVG 等),並輕鬆地在它們之間切換。這也將為有趣的擴充功能打開大門,例如使用 RBush 為圖層建立索引以實現快速互動功能。
雖然這是一個雄心勃勃的計畫,可能需要不止一個穩定版本才能完成,但完成所有這些重構工作將意味著 Leaflet 正在為 1.0 版本做好準備。
我希望在發布 0.7 之後關注的另一個方向是網站和文件改進。首先,Leaflet 迫切需要更多逐步教學(具有更多進階功能,如自訂圖層、自訂控制項等),而且我希望未來某個時候能進行一次文件/教學衝刺。其次,演示可以顯著改進 — 新增一個顯眼的視覺展示或應用程式庫、讓 Leaflet 使用者更突出,展示一些標誌和引言/推薦,以及更新版面配置/設計以獲得更時尚、簡潔的外觀等。
希望這能讓您對 Leaflet 在不久的將來會發生的事情有一個好的了解,並且不要猶豫在評論中提出任何問題 — 我很樂意回答!
一如既往,請在 下載頁面 上獲取新版本的 CDN 連結或下載。請務必在您的應用程式上試用它並回報任何回歸錯誤,以便我們可以立即修補它們。讓我們像往常一樣在 Twitter 上發布一些關於這個版本的熱門話題!
感謝所有參與 Leaflet 貢獻、錯誤報告、郵件列表、Twitter 熱門話題、製作出色的應用程式並傳播 Leaflet 的人 — 謝謝你們!你們是有史以來最棒的社群。
乾杯,
Vladimir。