2016-07-26 6 views
1

Я работаю с плагином Leaflet.StyledLayerControl и хотел бы установить мои слои так, чтобы полигоны всегда выталкивались назад, линии над полигонами и указывали над линиями.Оверлейный лист (точки, линии и многоугольники)

Я искал решения здесь, но большинство из них относится к плиткам или картам (которые, я думаю, работают только с другой версией листовки 1.0).

Я хочу, чтобы можно было включать и выключать линии и всегда иметь их ниже точек (то же самое с полигонами ниже полилиний).

Я предполагаю, что мне нужно что-то сделать с setZIndex или bringToFront(), но я не уверен, с чего начать.

Любая помощь будет оценена по достоинству. Благодарю.

ответ

1

Простым решением является использование Leaflet 1.0, который предоставляет вам функциональность map.createPane("paneName"). Таким образом, вы создаете как «polygonsPane», «linesPane» и «pointPane», которые вы указываете для каждого из ваших слоев vector/shape, используя их опцию pane.

После установки вы можете добавлять/удалять их на/из карты, и они всегда будут вставлены в указанную область, следовательно, соблюдая порядок панели.

// Create necessary panes in correct order (i.e. "bottom-most" first). 
map.createPane("polygonsPane"); 
map.createPane("linesPane"); 
map.createPane("pointsPane"); 

L.polygon([/* coords */], { pane: "polygonsPane" }).addTo(map); 
L.polyline([/* coords */], { pane: "linesPane" }).addTo(map); 
L.circleMarker([/* coords */], { pane: "pointsPane" }).addTo(map); 

Демо: https://jsfiddle.net/3v7hd2vx/51/

С листовка 0.7, вы знаете, что все векторные слои являются частью одного и того же SVG контейнера, которые добавляются при добавлении к карте, следовательно, они появляются в верхней части всех ранее добавленных векторы. Затем вы должны использовать bringToFront() и/или bringToBack(), чтобы повторно сортировать их в любом порядке.

Вы могли бы быть заинтересованы в этой должности для этого случая: https://gis.stackexchange.com/questions/166252/geojson-layer-order-in-leaflet-0-7-5/167904#167904

+0

Спасибо. Я обновился до 1.0 и получил его для работы. –

+0

Добро пожаловать, я рад, что вы достигли своей цели! :-) Обратите внимание, что SO способ поблагодарить людей также ** принять ** ответ, который вам помог. Он также сообщает сообществу, что ваша проблема решена. – ghybs

+0

Хорошо, просто принято! Извините, это был мой первый пост, поэтому я действительно не знал, как это сделать. –

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