2014-06-13 18 views
8

Qual è il modo più veloce per ottenere le coordinate dei pixel di OpenLayers.Feature.Vector? Voglio dire, voglio ottenere la posizione del pixel (in alto a sinistra) rispetto al contenitore della mappa di una caratteristica già disegnata, se possibile senza calcoli, perché i miglioramenti delle prestazioni.La funzione di vettore degli elementi di apertura ottiene la posizione dei pixel

Grazie & saluti, Rafael.

+0

stai usando la versione 2 o 3? – Kenny806

+0

Intendi le coordinate pixel in alto a sinistra del riquadro di delimitazione? –

+0

Inoltre, come si desidera ottenerlo, con un controllo SelectFeature, sull'evento del drawend durante la creazione o in un altro modo? –

risposta

17

In OL3:

var geometry = feature.getGeometry(); 
var coordinate = geometry.getCoordinates(); 
var pixel = map.getPixelFromCoordinate(coordinate); 

In OL2:

var geometry = feature.geometry; 
var coordinate = new OpenLayers.LonLat(geometry.x, geometry.y); 
var pixel = map.getPixelFromLonLat(coordinate); 

Qualche Propedeuticità: la funzione deve essere il punto, altrimenti geometry.getCoordinates() restituisce un array di coordinate ed è necessario scegliere uno. L'altro dovrebbe essere abbastanza ovvio, ma lo menzionerò comunque: la variabile map è un'istanza di ol.Map o OpenLayers.Map rispettosamente

+0

Se vuole ottenere in alto a sinistra, si può anche fare, var bounds = geom.getBounds() e poi andare a sinistra, e in alto, dall'oggetto bounds. –

+0

Non so come usare bounds.left e bounds.top perché non cambia in modifica dello zoom. Devo andare a gettare una serie di 3000-5000 funzionalità nel peggiore dei casi. Quindi stavo cercando il modo più veloce per accedere (cx, cy). – Rafael

+0

Puoi sempre memorizzarlo come un attributo del poligono quando lo crei o lo modifichi e poi lo cerchi, invece di ricalcolarlo. –