工具类:获取两个经纬度的距离(米)
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();}
工具类:获取两个经纬度的距离(米)相关推荐
- java 获取两条经纬度线段的交点坐标工具类
java 获取两条经纬度线段的交点坐标工具类 网上有线段是否相交的判断方法,但是很少有获取线段交点的坐标的方法 我在这里整合了网上的一些相交的方法,通过相交的xy轴点返推出了经纬度. 拾取坐标系统 可 ...
- java工具类获取文件扩展名与content-type、http与content-type映射关系
java工具类获取文件扩展名与content-type.http与content-type映射关系 大家好,我是酷酷的韩~ 一.对应关系参考地址: http://doc.chacuo.net/cont ...
- php经纬度之间的距离计算公式,golang与php实现计算两个经纬度之间距离的方法
本文实例讲述了golang与php实现计算两个经纬度之间距离的方法.分享给大家供大家参考,具体如下: golang版本: package main import ( "fmt" & ...
- 计算两个经纬度的距离
一 点睛 计算两个经纬度的距离的方法这里提供两种. 1 基于 googleMap 中的算法得到两经纬度之间的距离,计算精度与谷歌地图的距离精度差不多. 2 计算中心经纬度与目标经纬度的距离(米) 二 ...
- C#计算两个经纬度的距离
一.C#计算两个经纬度的距离 //地球半径,单位米private const double EARTH_RADIUS = 6378137;/// <summary>/// 计算两点位置的距 ...
- 两个经纬度之间距离和角度的计算
两个经纬度之间距离和角度的计算 (alt,lon)为地球上某一点的纬度和经度. 方法一 1.将经纬度转换为三维地球坐标系坐标 球心与赤道上0经度点的连线为X轴,球心与赤道上东经90度点的连线为Y轴,球 ...
- 高德地图获取坐标距离_高德地图获取两个经纬度点间直线距离JS/PHP/SQL代码
最近做了几个小站,要求要定位到当前地址并且显示附近多少公里内的商家和产品. 定位好办,直接用高德地图搞定.有不需要显示地图又需要定位的页面把地图直接隐藏掉都可以.或者可以直接调用高德的定位组件. 但是 ...
- 身份证工具类-获取性别、年龄、出生日期
package com.kotei.aptiv.common.core.util;import org.apache.commons.lang3.StringUtils;import java.uti ...
- java 获取温度_Java利用RXTX串口通信工具类获取DS18B20温度传感器的温度值
环境:Windows10,Eclipse4.5.2,JDK1.7 设备:DS18B20温度传感器(4线,485接口),USB转485接口转换器,笔记本电脑 注意点:RTU传输,使用的是字节,那么在程序 ...
- java 集合反射_关于granite源码包CollectionUtil集合工具类获取集合反射类型、实例化各种集合类型HashSet/ArrayList等...
一.前言 基于granite源码包org.granite.util.CollectionUtil集合工具类,分别获取集合反射类型java.lang.reflect.Type.实例化newCollect ...
最新文章
- 阿里DataV可视化大屏介绍
- 论文浅尝 | 基于平行新闻的Bootstrapping关系抽取
- 【gradle】mac下 gradle默认本地仓库位置
- python 解方程 sympy_Python数据处理篇之Sympy系列(五)---解方程
- redis中有key但是删不掉_分布式锁用 Redis 还是 Zookeeper
- Admob(6.12.x)符号未定义错误的解决方法(IOS)
- 基于Freescale的主流芯片HCS08
- Java实现面向对象编程
- SSL证书不受信任怎么办?重点关注这4点
- 搭建一个 软件授权码管理系统
- shell 获取当前时间
- 电脑找不到wifi热点
- Codeforces Round #439 (Div. 2) E. The Untended Antiquity 二维线段树||二维树状数组
- PhxRPC源码简析
- List<T>, IQueryable, IEnumerable 关系和区别
- win10wifi开关自动弹回_win10wlan开关自动弹回
- JS实现抽奖代码(0-999随机数开始暂停抽奖按钮)
- 使用python进行异常值(outlier)检测实战:KMeans + PCA + IsolationForest + SVM + EllipticEnvelope
- 论文审稿怎么审?审稿意见怎么写?(含案例)
- 第七篇 python基础之函数,递归,内置函数