Me gustaría poder cambiar el orden de las capas en el folleto.
Intenté implementar dos complementos de folleto para cambiar el orden de las capas.
Primero probé leaflet-control-orderlayers , que parece funcionar, pero no es compatible con layerGroups, aquí está mi error archivado .
Luego probé mapbbcode , que admite grupos de capas, pero no parece funcionar ni mantenerse.
¿Alguien tiene alguna sugerencia sobre cómo implementar esta función?
Respuestas:
Puedes hacer esto de dos maneras (al menos; así es como lo hago):
layer.bringToFront()
ylayer.bringToBack()
pero estos solo harán una capa a la vez, y solo la empujarán hacia adelante o hacia atrás, no en el medio. Por lo tanto, necesitaría colocar sus capas en el orden deseado, comenzar con la capa que desea que esté en la parte inferior y llamarlayer.bringToFront()
a cada capa.También puede hacerlo quitando y volviendo a agregar la capa. Esto parece un desperdicio, pero dado que el mapa debe redibujarse al reposicionar capas de todos modos, generalmente no es tan importante.
Aquí hay un violín bastante complejo que ilustra el problema.
Básicamente, elimina todas las capas y luego las vuelve a agregar en
z-index
orden ascendente . Así que recorra todas sus capas superpuestas y llamemap.removeLayer(layer)
, luego ordénelas por su deseadoz-index
, luego vuelva a agregarlas usandolayer.addTo(map)
.fuente
Estaba teniendo el mismo problema y probé el método fixZOrder (), pero lamentablemente no ordenó los marcadores Leaf porque no parece afectar el zindex de los marcadores Leaflet.
Parece que .bringToFront () funciona solo en formas vectoriales que admiten este método, al contrario de los marcadores Leaf que implementé, haciendo que esta solución no funcione, sin mencionar otro problema de código que estaba experimentando con fixZOrder (), pero esto podría ser exclusivo de mi caso.
En cambio, simplemente dejé el orden de la capa en el Folleto (opciones) en el orden en que las cargué , lo que causó problemas con el apilamiento de marcadores (complemento OMS Spiderf) al usar los controles de capa , pero logré resolverlos con la ayuda de mi propia función basada en setZIndexOffset ()
Aunque mi escenario no requería que, al
fixZOrder(layers)
final, cualquier otra persona que usara este método junto con marcadores apilados pudiera necesitar adoptar un enfoque similar y, por lo tanto, estoy publicando esto como una solución adicional para los usuarios potenciales del método de orden de capas mencionado anteriormente.
CRÉDITO : respuesta de ghybs en stackoverflow.com/a/37850189/11106279
fuente
Similar a la respuesta de @nothingisnenecesita los siguientes usos
layer.bringToFront()
para mantener el orden z cuando tiene unalayer control
carga de datos combinada y asincrónica.Definir las capas:
Use la siguiente función para imponer el orden z:
Cuando se usa el control de capa, cuando una capa se activa, estará encima de las otras capas, necesitamos volver a aplicar la lógica de orden cuando se agrega una capa. Esto se puede hacer vinculando el
overlayadd
evento en el mapa y llamando a lafixZOrder
función:fuente
Debe crear el Panel para controlar el pedido.
Con esto, puede agregar la capa al panel que desee.
fuente