kotlin

package com.zo.utilimport org.gavaghan.geodesy.Ellipsoid
import org.gavaghan.geodesy.GeodeticCalculator
import org.gavaghan.geodesy.GlobalCoordinatesobject CalculateDistanceUtil {// 获取两个经纬度的距离(米)fun getDistance(sourceLat: Double,sourceLng: Double,targetLat: Double,targetLng: Double,ellipsoid: Ellipsoid? = Ellipsoid.WGS84): Double {val source = GlobalCoordinates(sourceLat, sourceLng)val target = GlobalCoordinates(targetLat, targetLng)//创建GeodeticCalculator,调用计算方法,传入坐标系、经纬度用于计算距离val geoCurve = GeodeticCalculator().calculateGeodeticCurve(ellipsoid, source, target)return geoCurve.ellipsoidalDistance}// 获取两个经纬度的距离(米)fun getDistanceMeter(gpsFrom: GlobalCoordinates,gpsTo: GlobalCoordinates,ellipsoid: Ellipsoid? = Ellipsoid.WGS84): Double {val geoCurve = GeodeticCalculator().calculateGeodeticCurve(ellipsoid, gpsFrom, gpsTo);return geoCurve.ellipsoidalDistance}
}

java

1.反余弦计算方式:

private static final double EARTH_RADIUS = 6371000; // 平均半径,单位:m;不是赤道半径。赤道为6378左右
public static double getDistance(Double lat1,Double lng1,Double lat2,Double lng2) {// 经纬度(角度)转弧度。弧度用作参数,以调用Math.cos和Math.sindouble radiansAX = Math.toRadians(lng1); // A经弧度double radiansAY = Math.toRadians(lat1); // A纬弧度double radiansBX = Math.toRadians(lng2); // B经弧度double radiansBY = Math.toRadians(lat2); // B纬弧度// 公式中“cosβ1cosβ2cos(α1-α2)+sinβ1sinβ2”的部分,得到∠AOB的cos值double cos = Math.cos(radiansAY) * Math.cos(radiansBY) * Math.cos(radiansAX - radiansBX)+ Math.sin(radiansAY) * Math.sin(radiansBY);
//        System.out.println("cos = " + cos); // 值域[-1,1]double acos = Math.acos(cos); // 反余弦值
//        System.out.println("acos = " + acos); // 值域[0,π]
//        System.out.println("∠AOB = " + Math.toDegrees(acos)); // 球心角 值域[0,180]return EARTH_RADIUS * acos; // 最终结果}

2.利用第三方jar包计算:

<!--用于计算两点之间的距离--><dependency><groupId>org.gavaghan</groupId><artifactId>geodesy</artifactId><version>1.1.3</version></dependency>
public static double getDistanceMeter(GlobalCoordinates gpsFrom, GlobalCoordinates gpsTo, Ellipsoid ellipsoid){//创建GeodeticCalculator,调用计算方法,传入坐标系、经纬度用于计算距离GeodeticCurve geoCurve = new GeodeticCalculator().calculateGeodeticCurve(ellipsoid, gpsFrom, gpsTo);return geoCurve.getEllipsoidalDistance();}

工具类:获取两个经纬度的距离(米)相关推荐

  1. java 获取两条经纬度线段的交点坐标工具类

    java 获取两条经纬度线段的交点坐标工具类 网上有线段是否相交的判断方法,但是很少有获取线段交点的坐标的方法 我在这里整合了网上的一些相交的方法,通过相交的xy轴点返推出了经纬度. 拾取坐标系统 可 ...

  2. java工具类获取文件扩展名与content-type、http与content-type映射关系

    java工具类获取文件扩展名与content-type.http与content-type映射关系 大家好,我是酷酷的韩~ 一.对应关系参考地址: http://doc.chacuo.net/cont ...

  3. php经纬度之间的距离计算公式,golang与php实现计算两个经纬度之间距离的方法

    本文实例讲述了golang与php实现计算两个经纬度之间距离的方法.分享给大家供大家参考,具体如下: golang版本: package main import ( "fmt" & ...

  4. 计算两个经纬度的距离

    一 点睛 计算两个经纬度的距离的方法这里提供两种. 1 基于 googleMap 中的算法得到两经纬度之间的距离,计算精度与谷歌地图的距离精度差不多. 2 计算中心经纬度与目标经纬度的距离(米) 二  ...

  5. C#计算两个经纬度的距离

    一.C#计算两个经纬度的距离 //地球半径,单位米private const double EARTH_RADIUS = 6378137;/// <summary>/// 计算两点位置的距 ...

  6. 两个经纬度之间距离和角度的计算

    两个经纬度之间距离和角度的计算 (alt,lon)为地球上某一点的纬度和经度. 方法一 1.将经纬度转换为三维地球坐标系坐标 球心与赤道上0经度点的连线为X轴,球心与赤道上东经90度点的连线为Y轴,球 ...

  7. 高德地图获取坐标距离_高德地图获取两个经纬度点间直线距离JS/PHP/SQL代码

    最近做了几个小站,要求要定位到当前地址并且显示附近多少公里内的商家和产品. 定位好办,直接用高德地图搞定.有不需要显示地图又需要定位的页面把地图直接隐藏掉都可以.或者可以直接调用高德的定位组件. 但是 ...

  8. 身份证工具类-获取性别、年龄、出生日期

    package com.kotei.aptiv.common.core.util;import org.apache.commons.lang3.StringUtils;import java.uti ...

  9. java 获取温度_Java利用RXTX串口通信工具类获取DS18B20温度传感器的温度值

    环境:Windows10,Eclipse4.5.2,JDK1.7 设备:DS18B20温度传感器(4线,485接口),USB转485接口转换器,笔记本电脑 注意点:RTU传输,使用的是字节,那么在程序 ...

  10. java 集合反射_关于granite源码包CollectionUtil集合工具类获取集合反射类型、实例化各种集合类型HashSet/ArrayList等...

    一.前言 基于granite源码包org.granite.util.CollectionUtil集合工具类,分别获取集合反射类型java.lang.reflect.Type.实例化newCollect ...

最新文章

  1. 阿里DataV可视化大屏介绍
  2. 论文浅尝 | 基于平行新闻的Bootstrapping关系抽取
  3. 【gradle】mac下 gradle默认本地仓库位置
  4. python 解方程 sympy_Python数据处理篇之Sympy系列(五)---解方程
  5. redis中有key但是删不掉_分布式锁用 Redis 还是 Zookeeper
  6. Admob(6.12.x)符号未定义错误的解决方法(IOS)
  7. 基于Freescale的主流芯片HCS08
  8. Java实现面向对象编程
  9. SSL证书不受信任怎么办?重点关注这4点
  10. 搭建一个 软件授权码管理系统
  11. shell 获取当前时间
  12. 电脑找不到wifi热点
  13. Codeforces Round #439 (Div. 2) E. The Untended Antiquity 二维线段树||二维树状数组
  14. PhxRPC源码简析
  15. List<T>, IQueryable, IEnumerable 关系和区别
  16. win10wifi开关自动弹回_win10wlan开关自动弹回
  17. JS实现抽奖代码(0-999随机数开始暂停抽奖按钮)
  18. 使用python进行异常值(outlier)检测实战:KMeans + PCA + IsolationForest + SVM + EllipticEnvelope
  19. 论文审稿怎么审?审稿意见怎么写?(含案例)
  20. 第七篇 python基础之函数,递归,内置函数

热门文章

  1. 微信支付超详细教程(附商城订单处理逻辑)
  2. vrep小车避障算法_V-REP 多车道巡线与避障
  3. xshell链接相当的慢,怎么解决
  4. Xshell 外观配置
  5. 通过一段代码发现 emu8086 和 DOSBox 的一点区别
  6. HTML兼容IE版本问题
  7. 怎样在计算机桌面上安装驱动器,怎么用韩博士驱动助理安装电脑驱动
  8. 数据处理(二):wgs84坐标的UTM投影
  9. 十年里程碑 vivo X80铸造高端手机的主色调
  10. Windows上Dos命令操作文件及文件夹