"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > كيفية حساب المسافة بين علامتين في خرائط جوجل V3؟

كيفية حساب المسافة بين علامتين في خرائط جوجل V3؟

تم النشر بتاريخ 2024-12-22
تصفح:460

How to Calculate the Distance Between Two Markers in Google Maps V3?

كيفية حساب المسافة بين العلامات في خرائط جوجل 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