Java ใช้การคำนวณระยะห่างระหว่างสองละติจูดและลองจิจูดและอัปโหลดรหัสโดยตรง
การคัดลอกรหัสมีดังนี้:
แพ็คเกจ com.jttx.poi.utils;
นำเข้า com.jttx.poi.entity.point;
-
* สร้างโดย Louis เมื่อวันที่ 2014/9/2
-
ชั้นเรียนสาธารณะ geoutils {
-
* คำนวณระยะห่างระหว่างสองละติจูดและจุดลองจิจูด (หน่วย: เมตร)
* @param lng1 ลองจิจูด
* @param Lat1 Latitude
* @param lng2
* @param lat2
* @กลับ
-
public Static Double 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 (หน่วย: M)
s = math.round (S * 10,000) / 10,000;
กลับ s;
-
-
* คำนวณค่า TP
* @param curpoint จุดปัจจุบัน
* @param จุดชดเชยจุดที่เกี่ยวข้อง
* @param isgeography ว่าพิกัดทางภูมิศาสตร์เป็นเท็จหรือไม่นั้นเป็นพิกัด 2D
* @return ค่า tp
-
public double getdidirangle (ขอบจุด, จุดที่เกี่ยวข้องจุด, boolean isgeography) {
ผลลัพธ์สองเท่า = 0;
if (isgeography) {
double y2 = math.toradians (reatedpoint.getlat ());
double y1 = math.toradians (corpoint.getLat ());
double alpha = math.atan2 (reatedpoint.getlat () - curpoint.getLat (), (reatedpoint.getlng () - curpoint.getlng ()) * math.cos ((y2 - y1)/ 2)); // ละติจูด ทิศทางคูณด้วย COS (Y2-Y1/2)
double delta = alpha <0? (2*math.pi+alpha): alpha;
ผลลัพธ์ = math.todegrees (เดลต้า);
}อื่น {
double alpha = math.atan2 (reatedpoint.getlat () - curpoint.getLat (), reatedpoint.getlng () - curpoint.getlng ());
double delta = alpha <0? (2*math.pi+alpha): alpha;
ผลลัพธ์ = math.todegrees (เดลต้า);
-
ผลตอบแทน;
-
โมฆะคงที่สาธารณะหลัก (สตริง [] args) {
System.out.println (getDistance (121.446014, 31.215937, 121.446028464238, 31.215850242799));
-
-
ข้างต้นเป็นเรื่องเกี่ยวกับบทความนี้ฉันหวังว่าคุณจะชอบ