1、 代码块

package com.ilogie.tms.util;

import java.io.IOException;

import java.math.BigDecimal;

import java.text.MessageFormat;

public class LocationUtils {

// 以下为 获得 两点之间最短距离

private static final BigDecimal EARTH_RADIUS = MathUtil.toBigDecimal(6378.137);//定义 地球半径

private static final BigDecimal MATH_PI = MathUtil.toBigDecimal(Math.PI);//定义Math.PI

/**计算弧长**/

private static BigDecimal getRed(BigDecimal big){

return big.multiply(MATH_PI).divide(MathUtil.toBigDecimal(180.0), BigDecimal.ROUND_DOWN);

}

/**

* 计算 两点 之间 的 最短距离

* 返回 数据 为 两点之间的 公里数

*/

public static BigDecimal getShortestDistance(BigDecimal lat1,BigDecimal lng1,

BigDecimal lat2,BigDecimal lng2 ){

logger.debug("lat1: " +lat1+", lng1:" + lng1);

logger.debug("lat2: " +lat2+", lng2:" + lng2);

BigDecimal radLat1 = getRed(lat1);

BigDecimal radLat2 = getRed(lat2);

BigDecimal a = radLat1.subtract(radLat2);

BigDecimal b = getRed(lng1).subtract(getRed(lng2));

Double sinA = Math.sin(a.doubleValue()/2);

Double sinB = Math.sin(b.doubleValue()/2);

Double cosA = radLat1.doubleValue();

Double cosB = radLat2.doubleValue();

Object obj = 2 * Math.asin(Math.sqrt(Math.pow(sinA,2) + Math.cos(cosA)*Math.cos(cosB)*Math.pow(sinB, 2)));

BigDecimal s = new BigDecimal(obj);

s = s.multiply(EARTH_RADIUS);

return format(s, 3);

}

public static BigDecimal format(BigDecimal big, int scale) {

scale = 0 > scale ? 0 : scale;

big = big.setScale(scale, BigDecimal.ROUND_HALF_UP);

return big;

}

public static void main(String[] args) {

// latlng 31.2147094,121.5193688 上海浦东新区社区服务中心

// latlng 31.226327,121.4969213 上海普陀区星云招商办事处、

// 地图上 2.57 测试 2.58

// latlg 28.1939842 113.0108862 长沙火车站

// latlg 22.636828 113.814606 深圳宝安国际机场

BigDecimal lat1 = MathUtil.toBigDecimal(28.1939842);

BigDecimal lng1 = MathUtil.toBigDecimal(113.0108862);

BigDecimal lat2 = MathUtil.toBigDecimal(22.636828);

BigDecimal lng2 = MathUtil.toBigDecimal(113.814606);

System.out.println("最短距离:"+getShortestDistance(lat1, lng1, lat2, lng2));

}

}

2、测试结果

java经纬度曲线简化_JAVA 后台计算 经纬度 最短距离相关推荐

  1. 根据经纬度查询,mysql查询计算经纬度

    mysql经纬度查询并且计算2KM范围内附近用户的sql查询性能优化实例教程 https://www.cnblogs.com/mgbert/p/4146538.html 

  2. java a运算顺序_Java中计算顺序的规则是什么?

    噜噜哒 让我说得很清楚,因为人们一直误解这一点:子表达式的求值顺序是独立结合性和优先级..关联性和优先级确定操作者被执行但是不要确定子表达式都是经过评估的.你的问题是关于子表达式都是经过评估的.考虑A ...

  3. java 字符串排列组合_Java 程序计算列出字符串的所有排列组合

    Java 程序计算列出字符串的所有排列组合 在此示例中,我们将学习计算Java中字符串的所有排列组合. 要理解此示例,您应该了解以下Java编程主题: 字符串的排列是指可以通过互换字符串字符的位置来形 ...

  4. java客户端重复请求_Java后台防止客户端重复请求、提交表单实现原理

    Java后台防止客户端重复请求.提交表单实现原理 发布于 2021-1-8| 复制链接 摘记: 这篇文章主要介绍了Java后台防止客户端重复请求.提交表单实现原理,文中通过示例代码介绍的非常详细,对大 ...

  5. java 判断手机访问_java后台如何判断是移动端还是pc端的访问请求

    java后台如何判断是移动端还是pc端的访问请求 主要是根据  HttpServletRequest request  中的请求头所带的参数 user-agent来获取: String userAge ...

  6. java 三角形面积公式_java中计算任意三角形面积。

    你这个程序第二个类其实特别乱 是我刚才没细看 这回肯定改对了 我测试过了 还有你所说的推荐答案根本没必要用buffer,系统完全可以获取double类型的数据好么?别误导初学者! 运行之后,你只要每次 ...

  7. java下载xlsx文件_Java后台Controller实现文件下载操作

    代码 参数: 1.filePath:文件的绝对路径(d:\download\a.xlsx) 2.fileName(a.xlsx) 3.编码格式(GBK) 4.response.request不介绍了, ...

  8. java接口返回值_java后台调用接口并返回值

    import java.io.BufferedReader; import java.io.DataOutputStream; import java.io.IOException; import j ...

  9. java 压缩汉字字节_java中计算汉字的字节数

    中文并不一定是占两个字节的,具体占多少字节是跟具体的编码方式相关的. 比如说:GB2312.GBK.GB18030 编码是占用两个字节的,但是 UTF-8 编码的话至少需要占用三个字节. 有一个简单方 ...

  10. java oracle数据备份_Java后台备份oracle数据库脚本

    package atest; import java.io.BufferedReader; import java.io.File; import java.io.IOException; impor ...

最新文章

  1. 机器学习与推荐系统实践
  2. 计算机jsp外文文献,计算机 JSP web 外文翻译 外文文献 英文文献
  3. 感谢有您--我的51CTO【与51CTO的故事】
  4. python3 open()内置函数
  5. python-使用云图库实现文字填画的效果-0225
  6. Ubuntu系统下安装Gaussian09和GaussianView5(GS16和GV6安装同理)
  7. 2012蓝桥杯省赛真题 鲁卡斯序列
  8. ycf 梗_抖音三个汤勺放在筷子上是什么梗 抖音三个汤勺放在筷子上出处介绍[多图]...
  9. Jboot用@Cron失效
  10. 差分隐私若干基本知识点介绍(一)
  11. 威斯康星大学-深度学习和生成模型导论2021
  12. 不用/,*,mod乘、除、取模运算的除法
  13. CentOS7下Mantis安装与配置
  14. 2022年下半年软考网络规划设计师下午真题及答案解析
  15. ZooKeeper :Java客户端Watcher API介绍
  16. 无域控AlwaysOn实战教学 (一)
  17. 交通灯定时控制系统的设计
  18. 三维地图搜索的商业模式在哪儿[转]
  19. GAP: Generalizable Approximate Graph Partitioning Framework(广义近似图划分框架)
  20. 15 OpenCV4图像处理与视频分析实战(49.基于颜色的对象跟踪-.)

热门文章

  1. 看董事长陈睿11周年演讲,一起了解B站未来的三个使命吧
  2. Java中equal和==的比较[zz]
  3. 李彦宏创业12年解读:企业家精神改变工程师命运
  4. Go语言Cookie常用设置
  5. 希腊神话中的爱情悲剧
  6. linux内存中的文件权限,Linux系统管理(用户权限、磁盘存储、文件系统、内存、进程)...
  7. 【wxGlade学习】wxGlade环境配置
  8. (三)基础网络演进、分类与定位的权衡
  9. 在 Win10系统,所有程序默认都以管理员身份运行
  10. excel查重复_个人永久性免费Excel催化剂功能第98波零代码零距离轻松接触并拥有金融大数据...