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, लून / लाट कोर्ड्स पर आधारित)। एक फ़ंक्शन जो इस केंद्र की गणना कर सकता है (ईपीएसजी: 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 aa = e.selected[0].getGeometry().getExtent(); var oo = ol.extent.getCenter(aa);
और मुझे बिंदुओं, रेखाओं और बहुभुजों का केंद्र दिया। इसे यहाँ देखें
आप इसका सीमा केंद्र का उपयोग कर प्राप्त कर सकते हैं 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!!!!
});
उसी कोड ने लाइनों, बिंदुओं और बहुभुजों के लिए काम किया।
पुनश्च। ol.extent.getCenter
स्थिर है, राजभाषा संस्करण 3.9.0 और संस्करण 3.10.1 में प्रयोग किया जाता है और आप इसे प्राप्त कर सकते हैं कर सकते हैं यहां
आप इसके साथ केंद्र भी प्राप्त कर सकते हैं:
var center = e.feature.getGeometry().getCenter();
Uncaught TypeError: feature.getGeometry(...).getCenter is not a function
।
getCenter()
विधि केवल सर्कल geometries के लिए लागू है 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;