2013-11-12 4 views
4

У меня есть карта Leaflet.js с базовым слоем плитки, слоем плитки и некоторыми накладками. Мне нужно поместить слой плитки над надписью ВЫШЕ наложения. Я попытался довести его до фронта, используя bringToFront() - безрезультатно. Вот код:Наложение под плитки в Leaflet.js

map.addLayer(new L.StamenTileLayer("toner-lines")); 
...// more code, loading the overlays, etc 
var labels = L.tileLayer('http://{s}.www.toolserver.org/tiles/osm-labels-en/{z}/{x}/{y}.png', { 
    maxZoom: 17, 
    zIndex: 1000 
}); 
labels.addTo(map); 
labels.bringToFront(); 
+0

Мое предположение о том, что 'BringToFront()' приносит его перед слоем плитки, который все еще находится ниже слоя Overlay. Не могли бы вы создать jsFiddle, реплицируя проблему, чтобы ее можно было подтвердить и обходной путь? – Josh

+0

Согласно совету Джоша, вот JSFiddle: http://jsfiddle.net/michbarsinai/M29Dk/2/ –

ответ

4

Проблема состоит в том, что весь стек плитки слой рисуется под весь стек Наложение слоев и команды bringToFront и sendToBack влияют только слои в пределах каждого соответствующего стека. Существует bug report, подробно описывая это на сайте gitub на сайте Leaflet. Он может быть исправлен в 0,7, но он уже был отброшен пару раз.

В этом отчете об ошибке они ссылаются на workaround by jfirebaugh. Это должно делать то, что вы хотите. Он добавляет, в вашем случае, этикетки слой в виде отдельного DOM слоя ONTOP карты после все остальное было нарисовано, используя этот код:

var topPane = map._createPane('leaflet-top-pane', map.getPanes().mapPane); 
var topLayer = L.mapbox.tileLayer('lxbarth.map-vtt23b1i').addTo(map); 
topPane.appendChild(topLayer.getContainer()); 
topLayer.setZIndex(9); 
+0

Большое спасибо! обновленный Fiddle находится по адресу http://jsfiddle.net/michbarsinai/46B4U/2/ –

+0

Кажется, что он не фиксируется в 0.7.3, а в 0.8 dev – bennos

+0

Теперь он находится в мастерстве: https://github.com/Leaflet/Leaflet/ тянуть/2266 – mtfurlan

Смежные вопросы