Android/J2SE计算两个位置坐标之间的距离
16lz
2021-01-24
public double getDistance(double lat1, double lon1, double lat2, double lon2) { float[] results=new float[1]; Location.distanceBetween(lat1, lon1, lat2, lon2, results); return results[0]; }
在其他设备若没有类似android的Location的distanceBetween方法开采用如下代码获取:
double distance(double lat1, double lon1, double lat2, double lon2) { double theta = lon1 - lon2; double dist = Math.sin(deg2rad(lat1)) * Math.sin(deg2rad(lat2)) + Math.cos(deg2rad(lat1)) * Math.cos(deg2rad(lat2)) * Math.cos(deg2rad(theta)); dist = Math.acos(dist); dist = rad2deg(dist); double miles = dist * 60 * 1.1515; return miles; } //将角度转换为弧度 static double deg2rad(double degree) { return degree / 180 * Math.PI; } //将弧度转换为角度 static double rad2deg(double radian) { return radian * 180 / Math.PI; }
最后的返回值单位为英里,1英里=1.609344公里 =0.8684海里
更多相关文章
- 从系统角度理解Android的界面绘制
- 从Android开发者的角度看一看IOS和Flutter中的列表实现
- Android事件分发机制完全解析,带你从源码的角度彻底理解(下)-郭霖
- android手机屏幕密度的计算及dp、px、sp单位的转换,屏幕适配相关
- android 尺寸单位介绍(dp,sp,px)
- Android 压力传感器获取当前压强
- Android 自定义progressBar样式