4 votos

Resaltar la característica seleccionada en OpenLayers con un gráfico o retícula adicional

Estoy tratando de crear un mapa OpenLayers en el que puedo resaltar una característica de punto seleccionado poniendo otro gráfico a su alrededor, como este cuadro rojo:

Reticule above

Lo que he hecho hasta ahora es añadir una capa vectorial con una característica de punto único, y un styleMap que muestra la retícula como su externalGraphic. Luego muevo la característica y la muestro cuando quiero resaltar algo, u oculto la característica cuando no quiero. Esto funciona razonablemente bien, pero actualmente tengo que elegir entre una de dos opciones, pero cada una tiene una desventaja que quiero evitar.

Opción 1: Visualización correcta, interacción incorrecta .

La visualización es como la anterior, exactamente como la quiero, pero las características "cubiertas" por la retícula transparente ya no se pueden pulsar. Esto se consigue añadiendo la capa de la retícula al control SelectFeature y utilizando setLayerIndex para moverla a la parte superior. Esto significa que pasar el ratón por encima o hacer clic en cualquier otra característica dentro del cuadrado rojo no tiene ningún efecto.

Opción 2: Visualización incorrecta, interacción correcta.

Si en lugar de eso no añado la capa de la retícula al control SelectFeature, puedo hacer clic con éxito en cualquiera de las características seleccionables para mover la retícula hacia ellas. Sin embargo, no importa lo que yo establezco el z-index de la capa retícula o su característica, todas las características añadidas a la SelectFeature oscurecerlo, como en esta imagen:

Reticule below


Así que mi pregunta es, ¿cómo puedo conseguir el efecto combinado? Quiero la retícula de resaltado por encima de todas las funciones, pero que no tenga interacción con los eventos del ratón. ¿Hay alguna manera mejor que definir esta capa separada para la imagen resaltada? Si este es el mejor camino a seguir, ¿puedo pasar cualquier clic o eventos hover a través de la capa retícula a las capas de características por debajo de ella?

1voto

Avi S. Puntos 1

Tendré que hacer algo parecido en mi aplicación y he encontrado esto como posible pista/guía.

https://stackoverflow.com/questions/4728852/forcing-an-openlayers-markers-layer-to-draw-on-top-and-having-selectable-layers

Como sugiere la respuesta, probablemente no quieras modificar el código OL directamente, sino que tu propio código lo sustituya en tiempo de ejecución.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X