2010-11-08 17 views

Respuesta

13

primer lugar , en su aplicación hay cuatro niveles de mapas, incluida la capa vectorial que mencionó con iconos de círculo en su pregunta.

0: "Đường Sá"   ||---> Overlay Tiles 
    1: "Vệ Tinh"   ||---> Overlay Tiles 
    2: "TMS Overlay"  ||---> Markers ~ Icons 
    3: "KML"    ||---> Vector 

Análisis: partir de cero a durar uno, único vector parece ser el último de ellos, los demás se mantiene como superposición tiles.In fin de llegar a este problema hay que centrarse en la capa de marcador, es decir, características (iconos)
Como ha visto en el mapa, el evento click para el mapa se ha activado cuando intenta arrastrar el mapa alrededor. No se puede arrastrar porque el registro de eventos funciona primero para la capa de marcadores, no para el mapa. para arrastrar el mapa, mover el mouse (arrastrar) después del clic debe seguir. Ya que estás intentando esto en la capa vectorial, no hay posibilidad de pasar el evento para superponer capas.

Solución:
Te proponemos dos formas de lograr este problema de tipo de errores.

Let this be the long way
Hay un control en OpenLayers conocidos como SelectFeature heredado de Handler.Feature .Este control generalmente permite el vector de características de una capa dada en clic en hover.Which significa este controlador puede responder a Evento del mouse relacionado con cualquier característica dibujada. Solo las devoluciones de llamada se asocian con las características, necesitando una de ellas , haga clic en. Ahora todo lo que tenemos que hacer es volver a hacer clic en evento para hacer una panorámica de las superposición de teselas.

var selectFeat = new OpenLayers.Control.SelectFeature(
        vector, {toggle: true, clickout:false}); 
    selectFeat.handlers['feature'].stopDown = false; 
    selectFeat.handlers['feature'].stopUp = false; 
    map.addControl(selectFeat);//instance of map 
    selectFeat.activate(); 

Una vez que este control está activado usted tiene que asegurarse de que sus capas para pasar eventos a través de otro layer.To ello, basta con

layer.events.fallThrough = true;//both for vector and marker layers 

Después de todas estas acciones que hicieron hasta ahora, una última cosa que queda hacer: Eso es cambiar el orden de los marcadores y la capa kml.
And this should be the easiest way
Eso es z-índice en layers.You puede comprobar en el anterior secuencia de capas que la capa que tiene la más alta de identificación tiene también más alto índice z.

layer.setZIndex(...any number...); 

Además de esta solución, manera fácil sólo permite arrastrar a través de un mapa, cuando todas las funciones de clic repentinos de iconos pueden perderse sin mucho camino, por lo que es su elección para dejarlos atrás.

+0

¡Muchas gracias! Funciona correctamente ... – KimKha

+0

Respondió mi pregunta también! Tuve que modificarlo un poco pero extremadamente útil, ¡gracias! – Jared

+0

increíble amigo! GRACIAS !!!! –

1

Los eventos del mouse no desean propagarse a través de una superposición Vector svg a las capas de abajo.

La solución anterior exige que todas las capas HTML de marcador tengan un zindex más alto que todas las capas Vector SVG.

La siguiente CSS proporciona un potencial/parcial trabajo en torno a, la propagación de eventos a través del elemento SVG, pero sólo donde no hay elementos del vector dentro de la superposición svg:

/** Hack so mouse events propagate(bubble) through svg elements, but not the 
images within svg */ 
.olLayerDiv svg { 
    pointer-events: none; 
} 

.olLayerDiv svg * { 
    pointer-events: auto; 
} 

combinar el CSS por encima mientras que la adición fallthrough : fiel a todos los objetos de eventos de OpenLayers dentro de mapas, capas y controles.

// map events 
var map = new OpenLayers.Map(div, { fallThrough:true }); 

// layer events 
var lvec = new OpenLayers.Layer.Vector(....); 
lvec.events.fallThrough = true 
map.addLayers([lvec]) 

// all map controls 
var ctrl = new OpenLayers.Control.SelectFeature(lvec, {... 
    fallThrough: true, autoActivate:true }); 
map.addControl(ctrl) 
Cuestiones relacionadas