2014-06-13 12 views
8

Jaki jest najszybszy sposób na uzyskanie współrzędnych pikseli z OpenLayers.Feature.Vector? Chodzi mi o to, że chcę uzyskać pozycję piksela (górną, lewą) względem kontenera mapy już wypalonego obiektu, jeśli to możliwe bez obliczeń, ponieważ poprawa wydajności.funkcja wektorów openlayers uzyskać pozycję pikseli

Dziękujemy & pozdrowienia, Rafael.

+0

czy używasz wersji 2 lub 3? – Kenny806

+0

Masz na myśli współrzędne lewego górnego kwadracika ramki granicznej? –

+0

Również, w jaki sposób chcesz go uzyskać, z formantem SelectFeature, w zdarzeniu drawend podczas tworzenia lub w inny sposób? –

Odpowiedz

17

W OL3:

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

W OL2:

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

Kilka Wymagania wstępne: funkcja musi być punkt, w przeciwnym razie geometry.getCoordinates() zwraca tablicę współrzędnych i trzeba wybrać jeden. Druga powinna być dość oczywista, ale o tym wspomnę: mapa zmienna to instancja ol.Map lub OpenLayers.Map odpowiednio

+0

Jeśli chce zdobyć lewy górny róg, możesz to zrobić, var bounds = geom.getBounds(), a następnie w lewo i na górze, od obiektu obwiedni. –

+0

Nie wiem, jak korzystać z bounds.left & bounds.top, ponieważ nie zmieniają się przy zmianie zoomu. Muszę rzucić tablicę 3000-5000 funkcji w najgorszym przypadku. Szukałem więc najszybszego sposobu dostępu (cx, cy). – Rafael

+0

Zawsze można zapisać go jako atrybut wielokąta podczas tworzenia lub modyfikowania go, a następnie sprawdzać, zamiast przeliczać go. –

Powiązane problemy