Брошюра: организация панелей тайлов, геоджсона, маркеров, полилиний

Я изо всех сил пытаюсь упорядочить свои слои правильно.

http://fiddle.jshell.net/zw8TR/6/

У меня есть карта с несколькими разными слоями: обычные плитки (через Mapbox), плитки карты Google, полигоны карты мира Geojson (преобразованные из Topojson), маркеры и полилинии.

Проблема начинается с фрагментов карты Google — они располагаются выше по z-индексу, чем обычные фрагменты, И маркеры / полилинии, скрывающие все остальное. Я исправил это с помощью CSS.

(Кроме того: по моему опыту это не имеет смысла — z-индекс наследуется, и, таким образом, если у родителя z-индекс равен 1, у дочернего элемента не может быть ничего, кроме z-индекса. -index 1. Вы можете видеть, что прямой дочерний элемент .leaflet-google-layer имеет встроенный z-индекс 0, а фактические плитки (которые являются дочерними) имеют z-индекс 200+, который, по-видимому, учитывается в браузере. не понимаю, почему это происходит. Разве z-index НЕ наследуется, если добавлен встроенный?)

Далее, по умолчанию Leaflet помещает мои geoJson полигона в слой Overlay. Внутри есть SVG, который перемещается и масштабируется вместе с картой (приятно!). Однако мои полилинии также добавлены в тот же SVG вверху и теперь скрыты векторной картой. SVG имеет следующий встроенный атрибут — style="transform: translate3d(...);". Поскольку это вызывает 3D, z-index больше не работает, чтобы решить проблему.

Я хотел бы контролировать, как мои слои добавляются в DOM. Моя векторная карта geoJson (и плитки карты Google, если это возможно) должна находиться со слоями плитки, добавив в div .leaflet-tile-pane. Я попытался выполнить эту демонстрацию, чтобы вручную добавить "панели", но получил ошибку (строка 19 в моем скрипка):

Object [object Object] has no method 'getContainer'

or

Uncaught NotFoundError: An attempt was made to reference a Node in a context where it does not exist.

когда я удаляю метод. Я подозреваю, что это потому, что слой, который я пытаюсь создать, не является слоем плитки, но я не знаю, как это исправить.

После всего этого я был бы рад узнать: как мне удалить мой слой geoJson из .leaflet-overlay-pane??


person daviestar    schedule 27.12.2013    source источник
comment
См. этот stackoverflow.com/a/16207293/4047679.   -  person raphael    schedule 29.01.2016