2013-05-30 13 views
8

Yüklenmekte olan iki geoJson katmanı var - her iki katman da sınama amacıyla aynı verilerdiler, ancak iki farklı json dosyasından çiziliyorlar. Katmanları katman denetleyicisinde açıp kapattığımda, katmanların çizim sırası değişir.Katmanı açıp kapatırken katman sırasını değiştirme

bunun neden olduğunu bir fikir?

Bir JSFiddle içine kodumu koyduk: http://jsfiddle.net/lprashad/ph5y9/10/ ve JS aşağıdaki gibidir:

//styling for watersheds_copy 
var Orange = { 
    "color": "#ff7800", 
     "weight": 5, 
     "opacity": 0.65 
}; 

var Water_Orange = L.geoJson(watersheds_copy, { 
    style: Orange 
}); 

Water_Orange.addData(watersheds_copy); 

//these are blue 
var Water_blue = L.geoJson(watersheds, {}); 
Water_blue.addData(watersheds); 

//This sets the inital order - last in layer list being on top. Except minimal - tile layer is always on bottom 
var map = L.map('map', { 
    center: [41.609, -74.028], 
    zoom: 8, 
    layers: [minimal, Water_Orange, Water_blue] 
}); 

var baseLayers = { 
    "Minimal": minimal, 
     "Night View": midnight 
}; 

//This controls the order in the layer switcher. This does not change draw order 
var overlays = { 
    "Water_Orange": Water_Orange, 
     "Water_blue": Water_blue 
}; 
L.control.layers(baseLayers, overlays).addTo(map); 

LP

+0

Jsfiddle'ınızda bir şey göremiyorum. –

+0

JSFiddle'ınız çalışmıyor. Bununla birlikte, Katmanlar kontrolü ile açılırken/kapatırken katlarınızın sırayla değişmemesi gerekir. API'daki httpControl.Layers bölümündeki "autoZIndex" seçeneğine bakın: http://leafletjs.com/reference.html#control-layers. Bu kontrolün dışındaki katmanları değiştirmen mümkün mü? –

+0

JSFiddle'ı düzeltdim: http://jsfiddle.net/lprashad/ph5y9/, teşekkürler. AutoZindex'i true olarak ayarlamayı denedim, ancak bu yardımcı olmuyor. Her iki havza katmanını da kapatırsanız, mavi katmanı ve ardından Katman Kontrolü'ndaki turuncu katmanı açarsanız, katmanların haritanın başlamasından daha farklı bir çizim düzeninde olduğunu görürsünüz. – Lee

cevap

0

O L.GeoJson katmanlara özgü değil. Anlayabildiğim kadarıyla, katman kontrolü ile tüm Kitapçık katmanları için doğrudur. Açılan son katman sadece üstte. Bunun da bir hata olduğunu düşünmüyorum. Ben katman kontrolü ile haritalar tasarlarken kullandığım ve bağlı olduğum öngörülebilir bir davranış ...

+0

Bence kullanıcı çokgenin altındaki noktalara tıklamaya çalışırken çok kafa karıştırıcı bulacaktır. Listede en üstte bulunan katmanların, kullanıcıların bir CBS masaüstü yazılım ürününde olduğu gibi üst üste gelmeleri bekleniyor. – jbchurchill

1

En az 0.7.2'de, map.on('overlayadd') geri aramada bringToFront kullanmak zorunda kaldım. autoZIndex: false da benim durumumda çalışmadı. A comment on this issue nedenini açıklayabilir.

2

Ben Broşür kod bazı gösteren bu site üzerinde oldu araştırırken:

if (this.options.autoZIndex && layer.setZIndex) { 
      this._lastZIndex++; 
      layer.setZIndex(this._lastZIndex); 
    } 

TileLayer tek tabaka tipidir: İçinde http://ruby-doc.org/gems/docs/l/leaflet-js-0.7.0.3/lib/leaflet/src/control/Control_Layers_js.html

Ben autoZIndex uygulanması için bu koşulu bulundu setZIndex işlevi vardır, bu nedenle autoZIndex yalnızca orada çalışır.

Beni daha fazla rahatsız eden şeylerden emin değilim. Bu inanılmaz sınırlama ya da Leafet belgelerinin bunu göstermemesi.