2014-06-13 2 views
8

Was ist der schnellste Weg, um die Pixel-Koordinaten eines OpenLayers.Feature.Vector zu erhalten? Ich meine, ich möchte die Pixelposition (oben, links) relativ zum Kartencontainer eines bereits gezeichneten Features erhalten, wenn möglich ohne Berechnungen wegen Leistungsverbesserungen.openlayers vector feature pixel position

Dank & Grüße, Rafael.

+0

verwendest du Version 2 oder 3? – Kenny806

+0

Meinst du oben links Pixelkoordinaten der Bounding Box? –

+0

Wie möchten Sie es mit einem SelectFeature-Steuerelement auf dem Drawend-Ereignis beim Erstellen oder auf andere Weise erhalten? –

Antwort

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); 

Ein paar Vorwissen: Die Funktion muss Punkt sein, sonst geometry.getCoordinates() gibt ein Array von Koordinaten und Sie müssen wählen ein. Der andere sollte ziemlich offensichtlich sein, aber ich werde es trotzdem erwähnen: variable map ist eine Instanz von ol.Map oder OpenLayers.Map bzw.

+0

Wenn er das obere links bekommen möchte, können Sie auch tun, var Grenzen = geom.getBounds() und dann links und oben von den Grenzen Objekt. –

+0

Ich weiß nicht, wie man bounds.left & bounds.top benutzt, weil es sich bei Zoomänderungen nicht ändert. Ich muss im schlimmsten Fall eine Reihe von 3000-5000 Features werfen. Also suchte ich nach dem schnellsten Weg (cx, cy). – Rafael

+0

Sie können es immer als Attribut des Polygons speichern, wenn Sie es erstellen oder ändern, und es dann nachschlagen, anstatt es neu zu berechnen. –

Verwandte Themen