java根据经纬度计算距离_java根据高德经纬度获取地区

java根据经纬度计算距离_java根据高德经纬度获取地区前一阵项目中,有一个需求:是查找附近的人,其实就是查询某个距离内有多少用户。实现方式还是比较简单的,首先用户在APP上开启定位权限,将自己的经纬度都存储到数据库,然后以此经纬度为基准,以特定距离为半径,查找此半径内的所有用户。那么,如何java如何计算两个经纬度之间的距离呢?有两种方法,误差都在接受范围之内。1、基于googleMap中的算法得到两经纬度之间的距离,计算精度与谷歌地图的距离精度差不…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

前一阵项目中,有一个需求:是查找附近的人,其实就是查询某个距离内有多少用户。实现方式还是比较简单的,首先用户在APP上开启定位权限,将自己的经纬度都存储到数据库,然后以此经纬度为基准,以特定距离为半径,查找此半径内的所有用户。

那么,如何java如何计算两个经纬度之间的距离呢?有两种方法,误差都在接受范围之内。

1、基于googleMap中的算法得到两经纬度之间的距离,计算精度与谷歌地图的距离精度差不多。

/**

* 默认地球半径

*/

private static double EARTH_RADIUS = 6371000;//赤道半径(单位m)

/**

* 转化为弧度(rad)

* */

private static double rad(double d)

{

return d * Math.PI / 180.0;

}

/**

* @param lon1 第一点的精度

* @param lat1 第一点的纬度

* @param lon2 第二点的精度

* @param lat2 第二点的纬度

* @return 返回的距离,单位m

* */

public static double GetDistance(double lon1,double lat1,double lon2, double lat2) {

double radLat1 = rad(lat1);

double radLat2 = rad(lat2);

double a = radLat1 – radLat2;

double b = rad(lon1) – rad(lon2);

double s = 2 * Math.asin(Math.sqrt(Math.pow(Math.sin(a / 2), 2) + Math.cos(radLat1) * Math.cos(radLat2) * Math.pow(Math.sin(b / 2), 2)));

s = s * EARTH_RADIUS;

s = Math.round(s * 10000) / 10000;

return s;

}

2、计算中心经纬度与目标经纬度的距离(米)

/**

* 计算中心经纬度与目标经纬度的距离(米)

*

* @param centerLon

* 中心精度

* @param centerLat

* 中心纬度

* @param targetLon

* 需要计算的精度

* @param targetLat

* 需要计算的纬度

* @return 米

*/

private static double distance(double centerLon, double centerLat, double targetLon, double targetLat) {

double jl_jd = 102834.74258026089786013677476285;// 每经度单位米;

double jl_wd = 111712.69150641055729984301412873;// 每纬度单位米;

double b = Math.abs((centerLat – targetLat) * jl_jd);

double a = Math.abs((centerLon – targetLon) * jl_wd);

return Math.sqrt((a * a + b * b));

}

通过测试计算可得:

public static void main(String []args){

long raidus = 10000; //半径10km

double lon = 116.510958; //当前经度

double lat = 39.90786; //当前纬度

double lon1=116.510842;

double lat1=39.90777;

// double lon2=108.9644583556;

// double lat2=34.286439088548;

double dist;

double dist2;

dist=GeoUtil.GetDistance(lon, lat, lon1, lat1);

dist2=GeoUtil.distance(lon, lat, lon1, lat1);

System.out.println(“1.两点相距:” + dist + ” 米”);

System.out.println(“2.两点相距:” + dist2 + ” 米”);

}

其中:1.两点相距:14.0 米

2.两点相距:15.924338550347233 米

由此可见,这两种方法误差都不算大,如此java就能计算出两个经纬度直接的距离,也就满足了需求!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/190416.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 深度图可视化

    深度图可视化之前一直以为深度图应该是黑灰色的,不清楚为什么还有彩色的深度图,直到今天才知道原来这是深度图可视化。专门写篇博客纪念一下!灰黑色的图片人眼很难识别出其中的物体,感知深度的变化。所以才需要可视化,下面是几种颜色空间:…

    2022年4月25日
  • centos安装python3

    centos安装python3centos安装python31、查看安装默认安装位置whereispython2、python2.7默认安装是在/usr/bin目录中,切换到/usr/bin/cd/usr/bin/3、安装相关的依赖包yuminstall-yepel-releasezlib-develbzip2-developenssl-develncurses-develsqlite-develreadline-develtk-develgccmake4、安装pipyuminsta

    2022年6月15日
  • eplan激活码分享-激活码分享

    (eplan激活码分享)好多小伙伴总是说激活码老是失效,太麻烦,关注/收藏全栈君太难教程,2021永久激活的方法等着你。IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.net/100143.htmlMLZPB5EL5Q-eyJsaWNlbnNlSWQi…

    2022年3月21日
  • openssl生成证书linux,Linux下使用openssl生成证书「建议收藏」

    openssl生成证书linux,Linux下使用openssl生成证书「建议收藏」利用OpenSSL生成库和命令程序,在生成的命令程序中包括对加/解密算法的测试,openssl程序,ca程序.利用openssl,ca可生成用于C/S模式的证书文件以及CA文件.证书文件的生成步骤:一、服务器端1.生成服务器端的私钥(key文件);opensslgenrsa-des3-outserver.key1024运行时会提示输入密码,此密码用于加密key文件(参数des3是加密算法…

    2022年9月19日
  • 美化包软件_手机音量进度条插件下载

    美化包软件_手机音量进度条插件下载前言在我们进行自动化测试的时候,用例往往是成百上千,执行的时间是几十分钟或者是小时级别。有时,我们在调试那么多用例的时候,不知道执行到什么程度了,而pytest-sugar插件能很好解决我们的痛点。

    2022年7月28日
  • 【万字长文】 Vue全家桶从入门到实战,超详细笔记整理 ( 一 ) (建议收藏)

    【万字长文】 Vue全家桶从入门到实战,超详细笔记整理 ( 一 ) (建议收藏)笔记根据B站编程不良人视频整理,视频链接:【编程不良人】VUE全家桶入门到实战,学VUE看这个就够了,已完结!基于企业最流行Vue实战技术,需要md格式笔记的可以私信我。目录1、Vue引言2、Vue入门2.1、下载Vuejs2.2、Vue第一个入门应用3、v-text和v-html3.1、v-text3.2、v-html3.3、v-text和v-html对比4、vue中事件绑定(v-on)4、vue中事件绑定(v-on)4.1、绑定事件基本语法4.2、Vue中事件的简化语法4.3、Vue事件函数.

    2022年10月28日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号