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.
sumber
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.
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!
var x = extent[0] + (extent[2] - extent[0]) / 2; var y = extent[1] + (extent[3] - extent[1]) / 2;
getCenterOfExtent
ol.extent.getCenter
dan stabil. Sebagai contoh, saya lakukanvar aa = e.selected[0].getGeometry().getExtent(); var oo = ol.extent.getCenter(aa);
dan memberi saya titik, garis, dan poligon. Lihat di siniAnda 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
Untuk setiap klik ...
Dapatkan fitur pertama yang dipilih, dari array "terpilih". Kemudian dapatkan geometri, dan kemudian luasnya.
Gunakan sejauh itu untuk menemukan pusatnya, gunakan
ol.extent.getCenter
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 sinisumber
Anda juga bisa mendapatkan pusat dengan:
sumber
Uncaught TypeError: feature.getGeometry(...).getCenter is not a function
.getCenter()
Metode ini hanya berlaku untuk geometri lingkaranol.geom.Circle
. Apakah mungkin Anda memiliki jenis geometri yang berbeda?OpenLayers v 6.1.1
var center = e.feature.getGeometry().getExtent().getCenter()
sumber