dart實現(xiàn)經(jīng)緯度兩點坐標之間距離計算

代碼如下:

import 'dart:math';

void main() {
  print("distance between two point is : ${getDistance(
      119.9831030000, 30.2340350000, 119.9809580000, 30.2320980000)}");
}

getDistance(double lat1, double lng1, double lat2, double lng2) {
  double radLat1 = rad(lat1);
  double radLat2 = rad(lat2);
  double a = radLat1 - radLat2;
  double b = rad(lng1) - rad(lng2);
  double s = 2 *
      asin(sqrt(pow(sin(a / 2), 2) +
          cos(radLat1) * cos(radLat2) * pow(sin(b / 2), 2)));
  return s * 6378138.0;
}

double rad(double d) {
  return d * pi / 180.0;
}

選取兩點作為例子:

  1. 贊成樂山紅葉北門(Latitude: 119.9831030000, Longitude: 30.2340350000)
  2. 閑林街道辦事處(Latitude: 119.9809580000, Longitude: 30.2320980000)
    運行結果:

distance between two point is : 261.9676660067193

一個測經(jīng)緯度距離的網(wǎng)站測試的結果如下:

image.png

?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容