मैं एक ऐसे आवेदन पर काम कर रहा हूं जहां मेरे पास सर्कल और त्रिज्या का केंद्र है और मैं सर्कल की मदद से सर्कल की योजना बना रहा हूं।एक सर्कल की परिधि पर एक पुस्तिका पुस्तिका रखने के लिए पैरामेट्रिक समीकरण सटीक नहीं है?
मैंने उत्तर में परिधि के सबसे अंत में एक मार्कर रखा और इसे खींचने योग्य बना दिया।
var circle = L.circle(coords, radius).addTo(map);
convertRadiusToLatitude = parseInt(response.radius)/111111;
var coordsOnRadius = [parseFloat(response.lat) + convertRadiusToLatitude, parseFloat(response.long)];
var markerOnRadius = L.marker(coordsOnRadius, {draggable: true}).addTo(map);
अब, यह परिधि के लिए मार्कर कहते हैं और अब मैं यह केवल परिधि में ही है जिसके लिए मैं पैरामीट्रिक समीकरण का इस्तेमाल किया पर खींचने योग्य बनना चाहता था।
पैरामीट्रिक समीकरण
x = Xc + R * cos(theta)
y = Yc + R * sin(theta)
कोड के लिए खींच
markerOnRadius.on('drag', function(e){
bearing = marker.getLatLng().bearingTo(markerOnRadius.getLatLng());
var markerOnRadiusX = parseFloat(response.lat) + ((0.000009 * parseFloat(response.radius)) * Math.cos(toRad(bearing)));
var markerOnRadiusY = parseFloat(response.long) + ((0.000009 * parseFloat(response.radius)) * Math.sin(toRad(bearing)));
markerOnRadius.setLatLng([markerOnRadiusX, markerOnRadiusY]);
});
bearingTo
विधि:
L.LatLng.prototype.bearingTo = function(other) {
var d2r = L.LatLng.DEG_TO_RAD;
var r2d = L.LatLng.RAD_TO_DEG;
var lat1 = this.lat * d2r;
var lat2 = other.lat * d2r;
var dLon = (other.lng-this.lng) * d2r;
var y = Math.sin(dLon) * Math.cos(lat2);
var x = Math.cos(lat1)*Math.sin(lat2) - Math.sin(lat1)*Math.cos(lat2)*Math.cos(dLon);
var brng = Math.atan2(y, x);
brng = parseInt(brng * r2d);
brng = (brng + 360) % 360;
return brng;
};
अंक
जब मैं मार्कर खींचना शुरू करता हूं, तो यह कोड ठीक काम कर रहा है और इसे उस असर पर परिधि में लाता है जिस पर मार्कर को खींचा जाता है। लेकिन एक समस्या है, परिधि पर तार थोड़ा दूर हैं और देशांतर के मामले में हैं। जब असर 0 (उत्तर) होता है, तो कॉर्ड सही होते हैं, लेकिन जब यह 90 (पूर्व) होता है, तो रेखांश थोड़ा कम होता है कि मार्कर को परिधि पर होना चाहिए।
फिर 180 (दक्षिण) पर, कॉर्ड सही हैं, लेकिन 270 (पश्चिम) पर, रेखांश की गणना थोड़ा कम है और मार्कर फिर से त्रिज्या की ओर जाता है।
तो मूल रूप से यदि आप मार्कर को खींचते हुए देखते हैं, तो यह पूरी तरह से उत्तर छोर पर शुरू होता है और सर्कल के अंदर आने से शुरू होता है जब तक कि यह 9 0 तक पहुंचने तक असर के साथ थोड़ा बढ़ता है और फिर 180 तक फिर से परिधि की तरफ बढ़ने लगता है फिर।
यदि आपको इसकी जानकारी मिलती है तो यह एक अंडाकार की तरह बनता है।
किसी को भी मुझे बता सकते हैं क्यों देशांतर एक छोटे से बंद आ रहा है और यही कारण है कि एक अण्डाकार पथ में मार्कर चाल है। क्या यह विश्व निर्देशांक और खिड़की निर्देशांक के साथ कुछ करने के लिए है। या मेरे समीकरण कहीं से थोड़ा दूर हैं?
क्या आप प्रक्षेपण के साथ ऐसा कुछ करना चाहते हैं? क्या आधार मानचित्र के लिए कुछ अलग में सर्कल लगाया जा रहा है ...? – user965586
यह प्रक्षेपण के मुद्दे हो सकता है लेकिन मैप्स के साथ शुरुआती होने के नाते मैं इस समस्या को हल करने के बारे में नहीं समझ सकता। कोई उपाय? – Rohan
ठीक है। शायद थोड़ा सा समझने के लिए http://leafletjs.com/reference.html#iprojection यहां पढ़ा है। मैं केवल मोबाइल पर हूं इसलिए एक व्यापक उत्तर थोड़ा मुश्किल है। मैं यह जांचने के लिए कहूंगा कि आपका बेस मैप और सर्कल किस प्रक्षेपण में है, नए मार्कर में क्या प्रक्षेपण है। उन्हें सभी एक ही (डब्लूजीएस 84, वेब मर्केटर इत्यादि) – user965586