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;

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

  1. mysql 分页 去重_『备忘录』elasticsearch 去重分页查询

    一开始数据结构设计的很复杂,又是父子关系又是嵌套关系,结果发现不能通过简单的查询得到想要的结果:比如一个商店只出现一件符合条件的商品,弄得查询语句就变成这样了 curl -XPOST http://l ...

  2. c 获取mysql列数据_转 用C API 操作MySQL数据库

    用C API 操作MySQL数据库 参考MYSQL的帮助文档整理 这里归纳了C API可使用的函数,并在下一节详细介绍了它们.请参见25.2.3节,"C API函数描述". 函数 ...

  3. mysql 最小配置_如何配置全世界最小的 MySQL 服务器

    配置全世界最小的 MySQL 服务器--如何在一块 Intel Edison 为控制板上安装一个 MySQL 服务器. 介绍 在我最近的一篇博文中,物联网,消息以及 MySQL,我展示了如果Parti ...

  4. mysql long类型_怒肝两个月MySQL源码,我总结出这篇2W字的MySQL协议详解(超硬核干货)!!...

    点击上方蓝色"冰河技术",关注并选择"设为星标" 持之以恒,贵在坚持,每天进步一点点! 作者个人研发的在高并发场景下,提供的简单.稳定.可扩展的延迟消息队列框架 ...

  5. mysql死锁语句_记一次神奇的Mysql死锁排查

    背景 说起Mysql死锁,之前写过一次有关Mysql加锁的基本介绍,对于一些基本的Mysql锁或者死锁都有一个简单的认识,可以看下这篇文章为什么开发人员需要了解数据库锁.有了上面的经验之后,本以为对于 ...

  6. linux下mysql 有双机_在Linux环境下配置mysql cluster双机集群

    一.介绍 如何安装配置基于2台服务器的MySQL集群.并且实现任意一台服务器出现问题或宕机时MySql集群依然能够继续运行.加下后续的(keepalived+lvs+mysql cluster文档), ...

  7. 负载均衡mysql的使用_使用负载均衡集群集化 MySQL - Azure Virtual Machines | Microsoft Docs...

    使用负载均衡的集来群集化 Linux 上的 MySQL 04/14/2015 本文内容 重要 经典 VM 将于 2023 年 3 月 1 日停用. 如果从 ASM 使用 IaaS 资源,请在 2023 ...

  8. mysql级联删除_每天学一点学点MySQL数据库之第二节

    三.快速安装运行MySQL数据库 MySQL以前一直是开源免费的,被Oracle收购后有些变化:以前的版本都是免费的,社区版按GPL协议开源免费,商业版提供更加丰富的功能,但收费. 社区版的下载地址: ...

  9. 二级mysql大题_全国计算机等级考试二级MySQL练习题及答案

    下半年的计算机等级考试将在九月份举行,下面小编为大家带来了全国计算机等级考试二级MySQL练习题及答案,欢迎大家阅读! 全国计算机等级考试二级MySQL练习题及答案 一.选择题 1.在MySQL中,通 ...

  10. xshell mysql中文乱码_解决Xshell等Linux终端连接MySQL中文乱码问题

    Xshell里执行mysql命令,发现select出来的记录中中文乱码 用SQLyog 连接mysql发现正常. 开始以为Xshell编码问题,按照[文件]–>[打开]–>在打开的sess ...

最新文章

  1. OSI第一层:物理层功能及作用(详解与解释)
  2. JS显示document里所有的成员
  3. STM32F1迷你板外部中断
  4. JavaScript进阶5-学习笔记
  5. javascript --- js中的作用域 变量提升
  6. RESTEasy教程第1部分:基础
  7. ARM(AM5728)板移植VSFTPD
  8. 什么原数据更容易平稳_为什么老年人更容易患上艾滋病?
  9. 宾大最新《图神经网络》课程,附视频与课件
  10. 关于c#实现影音嗅探的问题(转)
  11. vue中公告消息横向无缝循环滚动
  12. BDE Installer for RAD Studio
  13. matlab画莫尔圆代码,EXCEL莫尔圆.xls
  14. Portapack应用开发教程(十二) SSTV接收机 A
  15. Wireshark基本介绍
  16. prometheus监控zookeeper
  17. 公开披露:美国如何联合作战并入侵ISIS网络
  18. 区域颜色填充-四连通种子填充算法
  19. java里precision,int precision()
  20. 微搭实现简单查询功能

热门文章

  1. 使用CSS更改hr标签的厚度
  2. itext7生成pdf页脚页码
  3. Android蓝牙4.0之传输速率的提升
  4. 高德地图API调用自定义地图使用
  5. 微信公众号还适合投资和创业吗?
  6. Python基础学习笔记-4.组合数据类型
  7. (DDIA)SQL与NoSQL数据模型简介
  8. 【EasyExcel】 模板填充批量导出,多文件以zip压缩包格式导出
  9. 分贝测试软件哪个好 家庭影院,家庭影院隔音怎么做效果最好 这7个解决方案你一定要知道...
  10. ARC093F - Dark Horse