Geometry
ওপেনলায়ার্সে একটি অবজেক্ট দেওয়া হয়েছে ৩. কীভাবে কেউ এর কেন্দ্র পেতে চলেছে?
ওপেনলায়ার্সের পুরানো সংস্করণগুলি একটি getCentroid
পদ্ধতি সরবরাহ করে। একটি getBounds
workaround ছিল। তবে এগুলি ওপেনলায়ার্স 3-এ সরানো হবে বলে মনে হয়।
Geometry
ওপেনলায়ার্সে একটি অবজেক্ট দেওয়া হয়েছে ৩. কীভাবে কেউ এর কেন্দ্র পেতে চলেছে?
ওপেনলায়ার্সের পুরানো সংস্করণগুলি একটি getCentroid
পদ্ধতি সরবরাহ করে। একটি getBounds
workaround ছিল। তবে এগুলি ওপেনলায়ার্স 3-এ সরানো হবে বলে মনে হয়।
উত্তর:
কার্যবিধির বিট কিন্তু getExtent
মানচিত্রের সীমা নির্ধারণ করতে আপনি জ্যামিতির পদ্ধতিটি ব্যবহার করতে পারেন । আমি মনে করি দৃশ্যের কেন্দ্রস্থলটি তখন জ্যামিতির কেন্দ্র হবে;
Test = new ol.geom.Geometry();
map.getView().fitExtent(Test.getExtent, map.getSize());
var CenterOfGeom = map.getView().getCenter()
আপনি যদি দৃষ্টিভঙ্গিটি পরিবর্তন করতে না চান (যা আমি কল্পনা করতে পারি), আপনি কিছুটা কেন্দ্রের অংশ গণনা করতে কোনও ফাংশন সম্পর্কে ভাবতে পারেন। এটি নির্দিষ্ট ধরণের সমন্বিত সিস্টেমগুলিতে সহজ হবে (EPSG: 3857, যা মিটার ভিত্তিক) তবে অন্যদের মধ্যে আরও কঠিন (ইপিএসজি: 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()
পদ্ধতিটি কেবল বৃত্তের জ্যামিতির ক্ষেত্রে প্রযোজ্য ol.geom.Circle
। আপনার কি পৃথক পৃথক জ্যামিতি থাকতে পারে?
ওপেনলায়ার্স বনাম 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;