2014-06-13 31 views
8

OpenLayers.Feature.Vector öğesinin piksel koordinatlarını almanın en hızlı yolu nedir? Performans iyileştirmeleri nedeniyle hesaplama yapılmadan mümkünse zaten çizilen bir özelliğin harita kabına göre piksel (üst, sol) konumunu almak istiyorum.openlayers vektör özelliği piksel alınıyor

Teşekkürler & Saygılarımızla, Rafael.

+0

versiyon 2 veya 3 kullanıyor musunuz? – Kenny806

+0

Sınırlayıcı kutunun sol üst piksel koordinatlarını mı kastediyorsunuz? –

+0

Ayrıca, bir SelectFeature denetimi ile, oluştururken veya başka bir şekilde drawend olayında nasıl elde etmek istersiniz? –

cevap

17

OL3 yılında:

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

OL2 yılında:

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

Birkaç Dersin Ön

: özellik, aksi geometry.getCoordinates noktası olmalıdır() koordinatlar dizisi döndürür ve seçtiğiniz gerekir bir. Diğeri oldukça açık olmalı ama yine de bahsedeceğim: değişken harita ol.Map veya OpenLayers.Map'ın bir örneğidir

+0

Eğer sol üst almak istiyorsa, ayrıca yapabilir, var sınırlar = geom.getBounds() ve sonra sınır ve üstte, sınırlar nesnesinden. –

+0

Bounds.left & bounds.top'u nasıl kullanacağımı bilmiyorum çünkü zum değişikliğinde değişiklik yapmıyor. En kötü durumda bir dizi 3000-5000 özellik atmak zorundayım. Bu yüzden erişmenin en hızlı yolunu arıyordum (cx, cy). – Rafael

+0

Her zaman oluşturduğunuzda veya değiştirdiğinizde çokgenin bir özniteliği olarak saklayabilir ve daha sonra yeniden hesaplamak yerine, yukarı bakabilirsiniz. –