public class Test{

private static List ilist = new ArrayList();

public static void main(String[] args) {

Test test3 = new Test();

Double localDouble = 0.0;

//定义一个二维数组存放经纬度

Double[][] doubles = {

{ 22.6036906766, 113.8793209706 }, //雍华源

{ 22.5205569549, 113.9394272419 }, //西海湾花园

{ 22.6494305358, 114.0411629507 }, //世纪春城4期

{ 22.5255080247,114.0384880750 }, //金海湾花园

{ 22.5246432654,114.0720634923 }, //金港豪庭

{ 22.5963291708,113.9689558477 }, //得意名居

{ 22.5509638661,113.9358124450 }, //麒麟花园A区西门

{ 22.5509638661,113.9358124450 }, //麒麟花园A区北门

{ 22.5254496086,114.0555439122 }, //裕康时尚名居

{ 22.7789489191,114.3063672776 }, //桑泰丹华园

{ 22.5240537775,114.0641924822 }, //皇庭彩园

{ 22.5141408858,114.0624887496 } }; //城市3米6

//门店的经纬度

Double[] initlocal = {22.539899298946577,113.95296375395431 };

for (int i = 0; i < doubles.length; i++) {

System.out.println("doubles.length==============="+doubles.length);

System.out.println("(" + doubles[i][0] + "," + doubles[i][1] + ")");

Double z = test3.getDistance(doubles[i][0], doubles[i][1],initlocal[0], initlocal[1]);

System.out.println(z);

//获取最短距离后把经纬度和距离存放到对象中

LocalAddress localaddress = new LocalAddress(doubles[i][0], doubles[i][1], z);

//将对象用list保存

ilist.add(localaddress);

}

List shotlocal = getLocalList();

Double lat=shotlocal.get(0).getLat();

Double lon= shotlocal.get(0).getLon();

localDouble = shotlocal.get(0).getDistance();

System.err.println("最近的距离:" + localDouble + "。对应的经纬是:" +"(" + lat + "," + lon + ")");

}

/*第一种求最近距离 ===================================================*/

/**

* 获取最短的距离

* @param lat

* @param lon

* @param initlat

* @param initlon

* @return

*/

public Double GetShotLocal(Double lat, Double lon, Double initlat,Double initlon) {

Double x = (initlat - lat) * (initlat - lat);

Double y = (initlon - lon) * (initlon - lon);

Double z = Math.sqrt(x + y);

return z;

}

/**

* 对List 进行排序

* @return

*/

public static List getLocalList() {

Collections.sort(ilist, new Comparator() {

@Override

public int compare(LocalAddress arg0, LocalAddress arg1) {

Double double1 = arg0.getDistance();

Double double2 = arg1.getDistance();

if(double1>double2){

return 1;

}else if (double1 == double2) {

return 0;

}else {

return -1;

}

}

});

return ilist;

}

/* 第二种求最近距离 ==================================================================*/

private static final double EARTH_RADIUS = 6378.137;//地球半径,单位千米

private static double rad(double d)

{

return d * Math.PI / 180.0;

}

/**

*

* @param lat1 第一个纬度

* @param lng1 第一个经度

* @param lat2 第二个纬度

* @param lng2 第二个经度

* @return 两个经纬度的距离

*/

public static double getDistance(double lat1,double lng1,double lat2,double lng2)

{

double radLat1 = rad(lat1);

double radLat2 = rad(lat2);

double a = radLat1 - radLat2;

double b = rad(lng1) - rad(lng2);

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;

}

}

entity

public class LocalAddress {

private Double lat; //纬度

private Double lon; //经度

private Double distance; //最近距离

public LocalAddress() {

// TODO Auto-generated constructor stub

}

public LocalAddress(Double lat, Double lon, Double distance) {

super();

this.lat = lat;

this.lon = lon;

this.distance = distance;

}

}

SELECT

*,(

6371 * acos (

cos ( radians(#{lat}) )

* cos( radians( lat ) )

* cos( radians( lng ) - radians(#{lng}) )

+ sin ( radians(#{lat}) )

* sin( radians( lat ) )

)

) AS distance

FROM machine

HAVING 3 > distance

ORDER BY distance

LIMIT 0 , 20;

原文:https://www.cnblogs.com/tomingto/p/11102240.html

mysql根据经纬度搜周边_根据经纬度查询最近距离,mysql查询经纬度附近范围相关推荐

  1. mysql和oracle冲突吗_三分钟带你分清MySQL 和Oracle之间的误区

    原标题:三分钟带你分清MySQL 和Oracle之间的误区 来自:华为云开发者社区 摘要:MySQL和Oracle,别再傻傻分不清. MySQL 和Oracle 在开发中的使用是随处可见的,那就简单去 ...

  2. mysql数据库的环境搭建_数据库学习(一)MySql环境搭建

    一.下载安装包并解压 官网下载地址: https://dev.mysql.com/downloads/windows/installer/ 记住解压目录 二.设置环境变量 打开计算机--属性--高级系 ...

  3. mysql设置用户永不过期_在Navicat Premium中管理MySQL用户 - 第2部分:创建新用户

    第2部分:创建新用户 在第1部分中,我们学习了如何使用Navicat Premium用户管理工具保护MySQL root帐户.本篇文章将讨论设置新用户的帐户详细信息,帐户限制和SSL设置. The G ...

  4. mysql数据库事务隔离级别是_数据库事务隔离级别-MySQL为例 · Sean

    在银行系统的存取款过程中,当遇到对一个账户并发存取的时候,系统该如何处理比较好.可能不少人会想到线程同步,然而在应用层使用同步会导致对象锁定,大大影响并发效率.此时,充分利用数据库的事务隔离机制可以很 ...

  5. mysql触发器主机自动增长_三分钟带你分清 Mysql 和 Oracle 之间的误区

    摘要:Mysql 和Oracle,别再傻傻分不清. mysql 和Oracle 在开发中的使用是随处可见的,那就简单去了解一下这俩款火的不行的数据库. 本质区别: Oracle数据库是一个对象关系数据 ...

  6. mysql安装无效安装源_(0.2.4)Mysql安装——yum源安装

    转自:https://www.cnblogs.com/jimboi/p/6405560.html 1.下载好对应版本的yum源文件 2.安装用来配置mysql的yum源的rpm包 可以用: yum r ...

  7. mysql数据表添加列_如何将列添加到MySQL表

    mysql数据表添加列 The command add column is used to add an additional column to any given MySQL table. 命令a ...

  8. mysql 1.4安装步骤_从零开始搭建系统1.4——MySql安装及配置

    安装环境:CentOS7 64位 ,安装MySQL5.7 1.创建mysql目录 # 下载mysql源安装包 shell> wget http://dev.mysql.com/get/mysql ...

  9. mysql跳过sock配置项_烦死。装个MYSQl启动时老是说mysql.sock不存在

    在ssh上输入 mysql -u root -p Enter password: ERROR 2002 (HY000): Can't connect to local MySQL server thr ...

最新文章

  1. 2022-2028年中国车载充电机行业深度调研及投资前景预测报告
  2. asp.net mvc发送邮件
  3. java 4大作用域_JavaWeb的四大作用域详解
  4. VMware虚拟机NAT模式的具体配置
  5. SAP Fiori footer的重写方式
  6. Hadoop 基础系列一Hadoop 系列之 1.0 和2.0 架构
  7. 不会SQL?没关系,以后动动嘴就能查询数据库了 | 附论文
  8. 大厂程序员年薪_年薪25万一线大厂程序员,年薪10万三线城市大专讲师,怎么选...
  9. 宿松的小孤山在安徽省内有名吗?
  10. 【Python-numpy】输出array时array中间是省略号而没有输出全部内容
  11. 安卓直播详细教程(一)-----bilibili开源播放器
  12. deepin 利用xmodmap修改键盘映射
  13. 计算流体力学基础与网格概述(与书同行)——ANSYS ICEM CFD网格划分从入门到精通——丁源
  14. (转载)重新编译SJF2410以适应NM9805并口卡(PCMICIA接口)
  15. 深入浅出量化对冲Alpha基金的操作
  16. 《Java语言程序设计与数据结构》编程练习答案(第七章)(一)
  17. 大学计算机专业吐槽,大学专业吐槽集锦:分分钟让你感觉“前途无亮”!
  18. NSG2-一个很好用的ns2的tcl脚本自动生成软件
  19. 联想电脑G40无法使用 非要睡眠后才能启用wifi
  20. MVP2006成都聚会图片

热门文章

  1. 小米计算机找不到,小米手机投屏找不到设备的情况怎么办?
  2. 【微信小程序控制硬件③】 从软件到硬件搭建一个微信小程序控制esp8266的项目,自定义通讯协议,为面试职位和比赛项目加分!
  3. 四代增强 (BTE实例详解)
  4. 如果有家公司给你4300的工资,每天闲得发慌,朝九晚六,周末双休,你能坚持多久?
  5. 基于summernote的富文本编辑器,粘贴时去除word格式
  6. JVM-13. 垃圾回收器
  7. 2014522420145238《信息安全系统设计基础》实验三
  8. Error: [$injector:unpr] Unknown provider: $scopeProvider - $scope -错误解决方案
  9. [扩展阅读] EasyGUI 学习文档【超详细中文版】
  10. 公众号开发(三)----接收事件推送之关注/取消关注事件