根据一个经纬度坐标获取周边最近经纬。Java实现
1.需求:指定一个经纬度坐标,如:(31.2121751783,121.4411213954)。周围有一堆经纬度坐标,找出与它最近的那个。
2.实现思路:将给出经纬度看成原点(0,0)。周围经纬度定位后利用三角形第三边计算原点到各个经纬度的半径距离,最短的那个即最近的经纬。
3.具体代码:
package com.zjj.LatAndLongDemo;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List; import com.zjj.Entity.LocalAddress; public class Test3 { private static List<LocalAddress> ilist = new ArrayList<LocalAddress>();
public static void main(String[] args) {
Test3 test3 = new Test3();
Double localDouble = 0.0; //定义一个二维数组存放经纬度
Double[][] doubles = { { 31.1963877723, 121.4940175770 },
{ 31.2020280000, 121.5006010000 },
{ 31.1963702573, 121.4940084124 },
{ 31.1951946273, 121.4991236524 },
{ 31.1983746273, 121.4895436524 },
{ 31.2068062375, 121.4686363819 },
{ 31.2127140000, 121.4751610000 },
{ 31.2067706666, 121.4686028298 },
{ 31.2056732366, 121.4737227198 },
{ 31.2087332366, 121.4640927198 },
{ 31.2103126101, 121.4457401593 },
{ 31.2166680000, 121.4521640000 } };
//门店的经纬度
Double[] initlocal = {31.1221751783,121.5011213954 }; for (int i = 0; i < doubles.length; i++) {
System.out.println("(" + doubles[i][0] + "," + doubles[i][1] + ")");
Double z = test3.GetShotLocal(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<LocalAddress> 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<LocalAddress> 进行排序
* @return
*/
public static List<LocalAddress> getLocalList() {
Collections.sort(ilist, new Comparator<LocalAddress>() {
@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;
}
} LocalAddress类: package com.zjj.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;
}
public Double getLat() {
return lat;
}
public void setLat(Double lat) {
this.lat = lat;
}
public Double getLon() {
return lon;
}
public void setLon(Double lon) {
this.lon = lon;
}
public Double getDistance() {
return distance;
}
public void setDistance(Double distance) {
this.distance = distance;
} }
4.效果:

为了方便查看效果这里给出两组简单数据,代码中是真实经纬度。
根据一个经纬度坐标获取周边最近经纬。Java实现的更多相关文章
- java实现判断一个经纬度坐标是否在一个多边形内(经自己亲测)
1.在高德地图上绘制的多边形:经纬度逗号分隔格式:上面是用来方便存坐标的对象:下面是方法测试:直接复制代码即可运行 public class Point { private Double x; pri ...
- 通过经纬度坐标计算距离的方法(经纬度距离计算)ZZ
通过经纬度坐标计算距离的方法(经纬度距离计算) 最近在网上搜索“通过经纬度坐标计算距离的方法”,发现网上大部分都是如下的代码: #define PI 3.14159265 static double ...
- C#的百度地图开发(三)依据坐标获取位置、商圈及周边信息
原文:C#的百度地图开发(三)依据坐标获取位置.商圈及周边信息 我们得到了百度坐标,现在依据这一坐标来获取相应的信息.下面是相应的代码 public class BaiduMap { /// < ...
- 利用百度地图API,获取经纬度坐标
利用百度地图API,获取经纬度坐标 代码很简单,但在网上没找到现成的获取地图经纬度的页面. 就是想,给当前页面传递一个经纬度,自动定位到此经纬度.然后可以重新选择,选择完返回经纬度. 效果如下: 源代 ...
- C# JackLib系列之如何获取地球上两经纬度坐标点间的距离
获取地球上两经纬度坐标点间的距离,利用[大圆距离公式] A diagram illustrating great-circle distance (drawn in red) between tw ...
- ionic 3 安卓手机获取经纬度坐标
现在有个需求:每隔一段时间需向后台服务器返回当前用户的经纬度坐标. ionic 官方提供的有定位插件cordova-plugin-geolocation,兼容ios和android版本,网上查资料说最 ...
- 批量调用百度地图API获取地址经纬度坐标
1 申请密匙 注册百度地图API:http://lbsyun.baidu.com/index.php?title=webapi 点击左侧 “获取密匙” ,经过填写个人信息.邮箱注册等,成功之后在开放平 ...
- MacOS下Terminal获取GPS经纬度坐标
通过命令行直接获取经纬度坐标MacOS 首先下载WhereAmI,最新版本: https://github.com/robmathers/WhereAmI/releases/download/v1.1 ...
- 根据经纬度坐标计算距离-python
一.两个坐标之间距离计算 参考链接: python实现 1.Python 根据地址获取经纬度及求距离 2.python利用地图两个点的经纬度计算两点间距离 LBS 球面距离公式 美团app筛选“离我最 ...
随机推荐
- BZOJ 2761: [JLOI2011]不重复数字 set
Description 给出N个数,要求把其中重复的去掉,只保留第一次出现的数. 例如,给出的数为1 2 18 3 3 19 2 3 6 5 4,其中2和3有重复,去除后的结果为1 2 18 3 19 ...
- iOS设计模式之工厂模式
一,什么是工厂模式 模式定义: “专门定义一个类来负责创建其他类的实例,被创建的实例通常具有共同的父类.” 世界上就是由一个工厂类,根据传入的参数,动态地决定创建出哪一个产品类的实例. 需求场景: 简 ...
- windows系统查看端口占用情况
windows系统,经常发现我们需要使用的端口被别的程序占用.但是我们又不知道是被谁占用,那如何查看端口被哪个程序占用呢?在这里就一起看看如何查看某个端口被占用的解决方法. 开始---->运行- ...
- (2).net体系
一.C# 和CLR 和.Net Framework 的历史版本对照表 C#版本 CLR版本 Framework版本 1.0 1.0 1.0 1.2 1.1 1.1 2.0 2.0 2 ...
- jmeter添加自定义扩展函数之Strng---base64解密
1,打开eclipse,新建maven工程,在pom中引用jmeter核心jar包,具体请看---https://www.cnblogs.com/guanyf/p/10863033.html---,这 ...
- Python Django 编写一个简易的后台管理工具3-运行项目
编写view页面 def hello(request): return render(request,'hello.html') 编写html页面 <!DOCTYPE html> < ...
- T1373:鱼塘钓鱼(fishing)
原题链接:1373:鱼塘钓鱼(fishing) 解题思路: 由于在走路时,鱼的数量不会减少,那我们此时可以先减去路上可能花掉的时间,用剩下的时间来找最多的鱼,然后从左向右走,k枚举能到达的最远的鱼塘, ...
- Daily Life——团队冲刺博客——(领航篇)
目录 领航目标 各个成员在 Alpha 阶段认领的任务 各个成员的具体任务安排 整个项目预期的任务量 团队成员贡献值的计算规则 燃尽图 Daily Life团队冲刺博客 领航目标 各个成员在 Alph ...
- ---搭建springMvc框架,希望对初学者有所参考
Spring Mvc ==> Struts2 spring 无法替代 myBatis 工作量大 要自己操作sql语句 ==> hibernate Spring Mvc 取代St ...
- unique(去重函数)
去重排序(unique函数的使用) 2013年05月30日 11:05:45 阅读数:9689更多 个人分类: 字符串处理 出处:http://www.cnblogs.com/QQbai/archi ...