ได้รับGeometry
วัตถุใน OpenLayers 3 เราจะไปรับจุดศูนย์กลางได้อย่างไร
OpenLayers เวอร์ชันที่เก่ากว่านั้นให้getCentroid
วิธี นอกจากนี้ยังมีgetBounds
วิธีแก้ปัญหา แต่ดูเหมือนว่าสิ่งเหล่านี้จะถูกลบออกใน OpenLayers 3
ได้รับGeometry
วัตถุใน OpenLayers 3 เราจะไปรับจุดศูนย์กลางได้อย่างไร
OpenLayers เวอร์ชันที่เก่ากว่านั้นให้getCentroid
วิธี นอกจากนี้ยังมีgetBounds
วิธีแก้ปัญหา แต่ดูเหมือนว่าสิ่งเหล่านี้จะถูกลบออกใน OpenLayers 3
คำตอบ:
บิตของวิธีแก้ปัญหา แต่คุณสามารถใช้getExtent
วิธีบนเรขาคณิตเพื่อกำหนดขอบเขตบนแผนที่ ฉันเข้าใจว่าศูนย์กลางของมุมมองนั้นจะเป็นศูนย์กลางของเรขาคณิต
Test = new ol.geom.Geometry();
map.getView().fitExtent(Test.getExtent, map.getSize());
var CenterOfGeom = map.getView().getCenter()
หากคุณไม่ต้องการเปลี่ยนมุมมอง (ซึ่งฉันจินตนาการได้) คุณสามารถคิดถึงฟังก์ชั่นในการคำนวณจุดศูนย์กลางของขอบเขต สิ่งนี้จะง่ายในระบบพิกัดบางประเภท (EPSG: 3857 ซึ่งใช้เมตร) แต่ยากกว่าในระบบอื่น ๆ (EPSG: 4326 อิงจาก lon / lat coords) ฟังก์ชั่นที่สามารถคำนวณศูนย์นี้ (ใน EPSG: 3857) จะเป็นดังนี้;
function getCenterOfExtent(Extent){
var X = Extent[0] + (Extent[2]-Extent[0])/2;
var Y = Extent[1] + (Extent[3]-Extent[1])/2;
return [X, Y];
}
หวังว่านี่จะช่วยได้!
getCenterOfExtent
ol.extent.getCenter
คุณจะได้รับศูนย์ขอบเขตของการใช้ ในกรณีของฉันฉันมีเลเยอร์เวกเตอร์และฉันต้องการให้เป็นศูนย์กลางของสถานที่หลังจากที่ฉันคลิก
ดังนั้น
สร้างปฏิสัมพันธ์คลิกง่ายและเพิ่มลงในแผนที่
var select = new ol.interaction.Select();
map.addInteraction(select);
สำหรับแต่ละคลิก ...
select.on('select', function(e) {
รับคุณลักษณะแรกที่เลือกจากอาร์เรย์ "เลือก" จากนั้นรับเรขาคณิตของมันและจากนั้นขอบเขต
ใช้ขอบเขตนั้นเพื่อค้นหาจุดศูนย์กลางโดยใช้ ol.extent.getCenter
var aa = e.selected[0].getGeometry().getExtent();
var oo = ol.extent.getCenter(aa);
console.log("The center is : "+oo); // voila!!!!
});
รหัสเดียวกันนี้ใช้กับเส้นจุดและรูปหลายเหลี่ยม
PS The ol.extent.getCenter
เสถียรใช้ใน OL เวอร์ชั่น 3.9.0 และรุ่น 3.10.1 และคุณสามารถหาได้ที่นี่
นอกจากนี้คุณยังสามารถใช้ศูนย์ด้วย:
var center = e.feature.getGeometry().getCenter();
Uncaught TypeError: feature.getGeometry(...).getCenter is not a function
ฉันได้รับ
getCenter()
ol.geom.Circle
เป็นไปได้ไหมว่าคุณมีรูปทรงเรขาคณิตที่แตกต่างกัน?
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;