2012-06-04 11 views
8

Ho uno strato con più marcatori con icone piuttosto grandi, quindi si sovrappongono. Tramite l'elenco sul lato della mappa, gli utenti possono selezionare un indicatore e la mappa effettuerà una panoramica (e lo zoom) su di esso. Ma sarà ancora dietro ad altri produttori. Come posso ottenere un singolo produttore z-index e impostarlo? Sarei utile per ottenere lo z-index più usato e aggiungerne uno. (un'altra soluzione è aggiungere il numero totale di indicatori allo z-index)Cambia l'indice z del marker negli openlayers

I marcatori (o le caratteristiche) si trovano in una matrice myLib.features. La console non mostra alcuna funzione di tipo z-index.

Non riesco a trovare un esempio appropriato o una funzione API per questo.

EDIT:

Ho trovato questo esempio: http://dev.openlayers.org/examples/ordering.html non ho davvero capisce. In qualche modo la funzione creata prende il prossimo indice z dato dal livello tramite qualche tipo di symbolizer. Non ho idea di come lavorare questo ordinamento statico in uno dinamico.

risposta

2

Prova questo:

Prima di tutto, assicurarsi che si sta utilizzando un layer OpenLayers.Layer.Vector, non uno strato OpenLayers.Layer.Markers. Apparentemente il livello Markers è una vecchia notizia e tutto il nuovo sviluppo è fatto nel livello Vector. Ha più funzioni. (Ho sprecato un mucchio di tempo con il livello Markers anch'io).

Quindi, ciascun indicatore deve essere un oggetto OpenLayers.Feature.Vector. Il costruttore prende tre argomenti, il terzo dei quali è chiamato lo stile. Lo stile è dove si impostano gli attributi dell'immagine, l'ombra dello sfondo, il testo del mouse e lo z-index, che ha il nome della proprietà "graphicZIndex". Penso che sia quello che stai cercando.

http://dev.openlayers.org/releases/OpenLayers-2.12/doc/apidocs/files/OpenLayers/Feature/Vector-js.html#OpenLayers.Feature.Vector.OpenLayers.Feature.Vector.style

Aggiungere i "marcatori" (che sono di Vector) al tuo livello vettoriale con la funzione addFeatures. E basta ignorare l'argomento "opzioni".

http://dev.openlayers.org/releases/OpenLayers-2.12/doc/apidocs/files/OpenLayers/Layer/Vector-js.html#OpenLayers.Layer.Vector.addFeatures

ho scoperto che pagina di esempio troppo, e mi è sembrato confuso troppo. Stava impostando tutti gli stili dei marcatori nel costruttore del livello Vector (come valori predefiniti da utilizzare se lo stile del marcatore è stato omesso) invece del costruttore del marcatore. Penso che abbia più senso impostare lo stile del marker nel costruttore di marker.

Per cambiare lo stile in tempo reale, prendi uno dei tuoi marcatori OpenLayers.Feature.Vector, chiamato "marcatore" e fallo. E chiamiamo il livello "Livello" vettoriale.

marker.style.graphicZIndex = 13; 
layer.redraw(); 
+0

Questo non ha funzionato ma questo ha fatto https://gis.stackexchange.com/a/80574/8280 –