2014-12-08 8 views
2

我有一個瀏覽器插件的想法,它可以操縱第三方網站上的傳單地圖。但是我陷入了一件簡單的事情:我不確定如何發現頁面上的Leaflet地圖DOM元素,然後訪問關聯的Leaflet map對象。查找頁面上存在的傳單地圖對象,但沒有可變引用

  1. $('.leaflet-container')找到所有地圖對象的可靠方法嗎?

  2. 如何實際訪問該對象的map對象,所以我可以這樣做:$('.leaflet-container').eachLayer(...),這是行不通的。

這個問題基本上是一樣的How can I get a leaflet.js instance using only a DOM object?,但得到的答覆有一種變通方法不幫助。

回答

4
  1. 是的,這應該是足夠的,但它不是一個記錄的行爲,並可能在單張
  2. 的未來版本至少在理論上改變有沒有辦法做到這一點。對地圖的引用由創建地圖的代碼所擁有,它可能會丟棄它,或者可能將其存儲在您無權訪問的位置。傳單本身不存儲任何地方的地圖參考

在附註中,我認爲您應該讓您的代碼的用戶明確地將引用傳遞給您,而不是嘗試自動查找參考。例如參見inversion of control principle,其中調用者提供依賴關係; Law of Demeter也有些適用 - 不要撬入其他代碼內部(除非你真的,真的必須)。

+0

是否有任何可能的方式來追蹤對象引用而不被傳遞?我的想法是一種工具,可以讓您在任何基於Leaflet的網站上替換您自己的首選基礎圖層。爲了能夠在任何網站上運行,顯然它不能要求該網站的開發者做任何特別的事情...... – 2014-12-08 21:15:41

+0

不是我所知道的,如果可以的話,我會感到驚訝。至少不是沒有一些非常討厭的技巧。 – Liedman 2014-12-09 11:25:19

相關問題