मैं वर्तमान में एक OpenLayers मानचित्रण साइट विकसित कर रहा हूं। माप एक लाइन उपकरण, और एक क्षेत्र उपकरण का उपयोग करके किया जा सकता है। ये दोनों वर्तमान में OpenLayers API में उल्लिखित भू-माप माप की गणना करने के लिए निर्धारित हैं ।
मैं प्लानर माप के बजाय भू-माप माप का उपयोग करता हूं क्योंकि उपयोगकर्ता परीक्षण के दौरान लोगों ने उन दूरी के लिए उपकरण के माप पर सवाल उठाया था जो वे पहले से जानते थे (जैसे कि शहरों के बीच ड्राइविंग)।
साइट की एक नई विशेषता एक उपयोगकर्ता के लिए एक सेट त्रिज्या के नक्शे पर एक वृत्त खींचने में सक्षम होना है। OpenLayers केवल प्लानर दूरियों का उपयोग करके हलकों को बनाने की अनुमति देता है, इसलिए जब कोई उपयोगकर्ता जियोडेसिक माप उपकरण के साथ सर्कल को मापता है तो मान मेल नहीं खाते हैं। सर्कल प्लानर त्रिज्या के नीचे की छवि 10 किमी है, लेकिन व्यास के लिए जियोडेसिक लाइन माप 12 किमी है।
स्पष्ट रूप से यह एक उपयोगकर्ता (और खुद को) आश्चर्यचकित करेगा जो सही है।
इस उत्तर को देखते हुए ऐसा लगता है कि अधिकांश डेस्कटॉप जीआईएस सिस्टम इस मुद्दे को "अनदेखा" करते हैं, और प्लेनार माप और दूरी को लौटाते हैं। तो प्लानर और जियोडेसिक माप से निपटने के लिए उपयोगकर्ता इंटरफ़ेस और सटीकता के संदर्भ में सबसे अच्छा अभ्यास क्या है?
अपडेट करें
मुझे यह Google उदाहरण मिला, जो रेडी और मर्केटर प्रोजेक्शन के मुद्दे को दिखाता है:
http://maps.forum.nu/gm_sensitive_circle2.html
सर्कल आकर्षित करने के लिए जावास्क्रिप्ट कोड इस प्रकार है:
var lat1 = (PI/180)* center.lat(); // radians
var lng1 = (PI/180)* center.lng(); // radians
for (var a = 0 ; a < 361 ; a++ ) {
var tc = (PI/180)*a;
var y = asin(sin(lat1)*cos(d)+cos(lat1)*sin(d)*cos(tc));
var dlng = atan2(sin(tc)*sin(d)*cos(lat1),cos(d)-sin(lat1)*sin(y));
var x = ((lng1-dlng+PI) % (2*PI)) - PI ; // MOD function
var point = new GLatLng(parseFloat(y*(180/PI)),parseFloat(x*(180/PI)));
circlePoints.push(point);
bounds.extend(point);
}
क्या यह चक्र पृथ्वी की वक्रता को ध्यान में रखता है?
अंतिम अद्यतन
वर्किंग कोड http://geographika.co.uk/creating-a-geodesic-circle-in-openlayers पर पोस्ट किया गया