تقوم Java بتنفيذ حساب المسافة بين نقطتي خط الطول وخط الطول ، وتحميل الكود بشكل مباشر.
نسخة الكود كما يلي:
حزمة com.jttx.poi.utils ؛
استيراد com.jttx.poi.entity.point ؛
/**
* أنشأها لويس في 2014/9/2.
*/
فئة عامة geoutils {
/**
* احسب المسافة بين نقطتي خط العرض وخط الطول (الوحدة: متر)
* @param lng1 خط الطول
* @param lat1 latitude
* param lng2
* param LAT2
* @يعود
*/
GetDistance الثابتة العامة (Double LNG1 ، Double LAT1 ، Double LNG2 ، Double LAT2) {
double Radlat1 = Math.Toradians (LAT1) ؛
double Radlat2 = Math.Toradians (LAT2) ؛
double a = radlat1 - radlat2 ؛
Double B = Math.Toradians (LNG1) - Math.Toradians (LNG2) ؛
double s = 2 * Math.asin(Math.sqrt(Math.pow(Math.sin(a / 2), 2) + Math.cos(radLat1)
* Math.cos(radLat2) * Math.pow(Math.sin(b / 2), 2)));
s = s * 6378137.0 ؛ // خذ نصف قطر طول الأرض في الإهليلجي المرجعي القياسي لـ WGS84 (الوحدة: م)
s = math.round (s * 10000) / 10000 ؛
العودة s ؛
}
/**
* حساب قيمة TP
* param curpoint النقطة الحالية
* param reliefpoint نقطة الإزاحة
* param isgeography ما إذا كانت الإحداثيات الجغرافية خاطئة هي إحداثيات ثنائية الأبعاد
* regurn tp value
*/
GetDirangle الثابتة العامة (Point Curpoint ، Point RelatedPoint ، Isgeography Boolean) {
نتيجة مزدوجة = 0 ؛
إذا (isgeography) {
double y2 = Math.Toradians (reliefpoint.getlat ()) ؛
double y1 = math.toradians (curpoint.getlat ()) ؛
double alpha = math.atan2 (knowSpoint.getlat () - curpoint.getlat () ، (kextpoint.getlng () - curpoint.getlng ()) * math.cos ((y2 - y1)/ 2)) ؛ // latitude الاتجاه مضروب بواسطة COS (Y2-Y1/2)
Double Delta = alpha <0؟ (2*Math.pi+alpha): alpha ؛
النتيجة = Math.Todegrees (Delta) ؛
}آخر {
double alpha = math.atan2 (knowSpoint.getLat () - curpoint.getlat () ، chandepoint.getlng () - curpoint.getlng ()) ؛
Double Delta = alpha <0؟ (2*Math.pi+alpha): alpha ؛
النتيجة = Math.Todegrees (Delta) ؛
}
نتيجة العودة
}
الفراغ الثابت العام الرئيسي (سلسلة [] args) {
System.out.println (GetDistance (121.446014 ، 31.215937 ، 121.446028464238 ، 31.2158502442799)) ؛
}
}
ما سبق هو كل شيء عن هذا المقال ، أتمنى أن تنال إعجابك.