Geometry
OpenLayers 3'te bir nesne verildi. Kişi merkezini nasıl ele geçirirdi?
OpenLayers'ın eski sürümleri bir getCentroid
yöntem sağladı . Ayrıca bir getBounds
geçici çözüm vardı. Ancak bunların OpenLayers 3'te kaldırıldığı görülmektedir.
Geometry
OpenLayers 3'te bir nesne verildi. Kişi merkezini nasıl ele geçirirdi?
OpenLayers'ın eski sürümleri bir getCentroid
yöntem sağladı . Ayrıca bir getBounds
geçici çözüm vardı. Ancak bunların OpenLayers 3'te kaldırıldığı görülmektedir.
Yanıtlar:
Biraz geçici bir çözüm, ancak getExtent
haritadaki kapsamı ayarlamak için geometri üzerindeki yöntemi kullanabilirsiniz . Sanırım görüşün merkezi geometrinin merkezi olacak;
Test = new ol.geom.Geometry();
map.getView().fitExtent(Test.getExtent, map.getSize());
var CenterOfGeom = map.getView().getCenter()
Görünümü (hayal edebileceğim) değiştirmek istemiyorsanız, kapsamın merkezini hesaplamak için bir işlev düşünebilirsiniz. Bu, belirli koordinat sistemlerinde (sayaç tabanlı EPSG: 3857) kolay, diğerlerinde daha zor olacaktır (lon / lat koordinatlarına dayanan EPSG: 4326). Bu merkezi hesaplayabilen bir fonksiyon (EPSG: 3857'de) aşağıdaki gibi olacaktır;
function getCenterOfExtent(Extent){
var X = Extent[0] + (Extent[2]-Extent[0])/2;
var Y = Extent[1] + (Extent[3]-Extent[1])/2;
return [X, Y];
}
Bu yardımcı olur umarım!
getCenterOfExtent
Genişlik merkezini kullanarak elde edebilirsiniz ol.extent.getCenter
. Benim durumumda bir vektör katmanım var ve tıkladıktan sonra bir özelliğin merkezini almak istiyorum.
Yani
basit bir tıklama etkileşimi oluşturun ve haritaya ekleyin
var select = new ol.interaction.Select();
map.addInteraction(select);
Her tıklama için ...
select.on('select', function(e) {
Seçilen ilk özelliği "seçili" diziden alın. Sonra geometrisini ve sonra kapsamını alın.
Merkezini bulmak için bu kapsamı kullanın. ol.extent.getCenter
var aa = e.selected[0].getGeometry().getExtent();
var oo = ol.extent.getCenter(aa);
console.log("The center is : "+oo); // voila!!!!
});
Aynı kod çizgiler, noktalar ve çokgenler için de işe yaradı.
PS. ol.extent.getCenter
OL sürümü 3.9.0 ve sürüm 3.10.1 kullanılan, kararlı ve bunu bulabiliriz burada
Ayrıca merkezi aşağıdakilerle de alabilirsiniz:
var center = e.feature.getGeometry().getCenter();
Uncaught TypeError: feature.getGeometry(...).getCenter is not a function
.
getCenter()
Yöntem, daire geometrileri için geçerlidir ol.geom.Circle
. Farklı bir geometri türünüz olabilir mi?
OpenLayers v 6.1.1
var center = e.feature.getGeometry().getExtent().getCenter()
var x = extent[0] + (extent[2] - extent[0]) / 2; var y = extent[1] + (extent[3] - extent[1]) / 2;