Diberikan Geometry
objek di OpenLayers 3. Bagaimana cara mendapatkan pusatnya?
Versi OpenLayers yang lebih lama menyediakan getCentroid
metode. Ada juga getBounds
solusi. Tetapi ini tampaknya dihapus di OpenLayers 3.
Diberikan Geometry
objek di OpenLayers 3. Bagaimana cara mendapatkan pusatnya?
Versi OpenLayers yang lebih lama menyediakan getCentroid
metode. Ada juga getBounds
solusi. Tetapi ini tampaknya dihapus di OpenLayers 3.
Jawaban:
Sedikit solusi tetapi Anda dapat menggunakan getExtent
metode pada geometri untuk mengatur batas pada peta. Saya menganggap pusat tampilan kemudian akan menjadi pusat geometri;
Test = new ol.geom.Geometry();
map.getView().fitExtent(Test.getExtent, map.getSize());
var CenterOfGeom = map.getView().getCenter()
Jika Anda tidak ingin mengubah tampilan (yang dapat saya bayangkan), Anda dapat memikirkan fungsi untuk menghitung pusat sejauh mana. Ini akan mudah dalam beberapa jenis sistem koordinat (EPSG: 3857, yang berbasis meter), tetapi lebih sulit pada sistem lainnya (EPSG: 4326, berdasarkan lon / lat coords). Fungsi yang dapat menghitung pusat ini (dalam EPSG: 3857) adalah sebagai berikut;
function getCenterOfExtent(Extent){
var X = Extent[0] + (Extent[2]-Extent[0])/2;
var Y = Extent[1] + (Extent[3]-Extent[1])/2;
return [X, Y];
}
Semoga ini membantu!
getCenterOfExtent
Anda dapat menggunakan pusat jangkauannya ol.extent.getCenter
. Dalam kasus saya, saya memiliki layer vektor dan saya ingin mendapatkan pusat fitur setelah saya mengkliknya.
Begitu
buat interaksi klik sederhana dan tambahkan ke peta
var select = new ol.interaction.Select();
map.addInteraction(select);
Untuk setiap klik ...
select.on('select', function(e) {
Dapatkan fitur pertama yang dipilih, dari array "terpilih". Kemudian dapatkan geometri, dan kemudian luasnya.
Gunakan sejauh itu untuk menemukan pusatnya, gunakan ol.extent.getCenter
var aa = e.selected[0].getGeometry().getExtent();
var oo = ol.extent.getCenter(aa);
console.log("The center is : "+oo); // voila!!!!
});
Kode yang sama berfungsi untuk garis, titik, dan poligon.
PS. The ol.extent.getCenter
stabil, yang digunakan dalam OL versi 3.9.0 dan versi 3.10.1 dan dapat Anda dapat menemukannya di sini
Anda juga bisa mendapatkan pusat dengan:
var center = e.feature.getGeometry().getCenter();
Uncaught TypeError: feature.getGeometry(...).getCenter is not a function
.
getCenter()
Metode ini hanya berlaku untuk geometri lingkaran ol.geom.Circle
. Apakah mungkin Anda memiliki jenis geometri yang berbeda?
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;