كيفية حساب المسافة بين العلامات في خرائط جوجل V3
يعد حساب المسافة بين نقطتين على الخريطة مهمة شائعة، وجوجل يوفر تطبيق Maps V3 واجهة برمجة تطبيقات شاملة للقيام بذلك. واحدة من أكثر الطرق المباشرة هي استخدام صيغة هافرسين، التي تحسب المسافة بين إحداثيين جغرافيين مع الأخذ بعين الاعتبار انحناء الأرض. يمكن تنفيذ صيغة Haversine في JavaScript على النحو التالي:
var rad = function(x) { العودة س * Math.PI / 180؛ }; فار getDistance = وظيفة(p1, p2) { فار ر = 6378137؛ // متوسط نصف قطر الأرض بالمتر var dLat = rad(p2.lat() - p1.lat()); var dLong = rad(p2.lng() - p1.lng()); فار أ = Math.sin(dLat / 2) * Math.sin(dLat / 2) Math.cos(rad(p1.lat())) * Math.cos(rad(p2.lat())) * Math.sin(dLong / 2) * Math.sin(dLong / 2); فار ج = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a)); فار د = ص * ج؛ العودة د؛ // إرجاع المسافة بالمتر };
مثال للاستخدامvar rad = function(x) { return x * Math.PI / 180; }; var getDistance = function(p1, p2) { var R = 6378137; // Earth's mean radius in meter var dLat = rad(p2.lat() - p1.lat()); var dLong = rad(p2.lng() - p1.lng()); var a = Math.sin(dLat / 2) * Math.sin(dLat / 2) Math.cos(rad(p1.lat())) * Math.cos(rad(p2.lat())) * Math.sin(dLong / 2) * Math.sin(dLong / 2); var c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a)); var d = R * c; return d; // returns the distance in meter };
var Marker1 = new google.maps.Marker({ الموضع: google.maps.LatLng(51.508742, -0.120850) الجديد خريطة: خريطة }); var marker2 = google.maps.Marker({ جديد) الموضع: google.maps.LatLng(40.712784, -74.005941) الجديد خريطة: خريطة }); var distance = getDistance(marker1.getPosition(),marker2.getPosition());سيحتوي متغير المسافة الآن على المسافة بين العلامتين بالأمتار.
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3