2015-11-20 86 views
0

有沒有辦法,如何使用傳單z-索引多邊形時下?當地圖啓動時,我沒問題,但是當向現有地圖添加新多邊形時,我需要根據新地圖的面積將新多邊形分類到現有多邊形,因此較大的多邊形不會與小多邊形重疊。我發現這個解決方案:傳單多邊形排序

Leaflet z-index

但它veeeeery慢,當我的地圖包含的功能,更大的量。任何想法?

回答

0

我不知道這個答案的表演的想法,但是你可以試試看:

GeoJSON Layer Order In Leaflet 0.7.5

主要代碼:

// To be called after adding a geoJsonLayer to the map. 
function assignZindex(geoJsonLayer) { 
    geoJsonLayer.eachLayer(function (layer) { 
     layer._container.zIndex = layer.options.zIndex; 
    }); 
} 

// To be called after assignZindex(). 
function reOrderVectorLayers() { 
    var root = map._pathRoot, 
     child = root.firstChild, 
     next; 

    while (child) { 
     next = child.nextSibling; 
     if (!next) { 
      break; 
     } 
     if (next.zIndex < child.zIndex) { 
      root.insertBefore(next, child); 
      if (next === root.firstChild) { 
       continue; 
      } 
      child = next.previousSibling; 
      continue; 
     } 
     child = next; 
    } 
} 

它假定zIndex屬性是每個矢量(多邊形)圖層的options中定義的編號。

正如在該問題的評論中所述,如果您使用Leaflet 1.x,現在可以創建自己的窗格,您可以通過CSS z-index命令並將每個矢量圖層插入指定窗格中。

+0

謝謝,但這正是我在我的問題中鏈接的文章的原則 - 使用DOM模型訴諸對象。 – user3523426

+0

它的確使用DOM來排列你的向量,但實現是不同的。意識到DOM排序是確保Leaflet 0.x中SVG元素(特別是多邊形)的特定順序的唯一**方法,除非您已準備好對Leaflet進行足夠的修改,以使其表現得像Leaflet 1.x(用於創建自定義窗格)。 – ghybs