import java.util.HashMap;

import java.util.Map;

public class MapDistance {

private static double EARTH_RADIUS = 6378.137;

private static double rad(double d) {

return d * Math.PI / 180.0;

}

/**

* 根据两个位置的经纬度,来计算两地的距离(单位为KM)

* 参数为String类型

* @param lat1Str 用户经度

* @param lng1Str 用户纬度

* @param lat2Str 商家经度

* @param lng2Str 商家纬度

* @return

*/

public static String getDistance(String lat1Str, String lng1Str, String lat2Str, String lng2Str) {

Double lat1 = Double.parseDouble(lat1Str);

Double lng1 = Double.parseDouble(lng1Str);

Double lat2 = Double.parseDouble(lat2Str);

Double lng2 = Double.parseDouble(lng2Str);

double patm = 2;

double radLat1 = rad(lat1);

double radLat2 = rad(lat2);

double difference = radLat1 - radLat2;

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

double distance = patm * Math.asin(Math.sqrt(Math.pow(Math.sin(difference / patm), patm)

+ Math.cos(radLat1) * Math.cos(radLat2)

* Math.pow(Math.sin(mdifference / patm), patm)));

distance = distance * EARTH_RADIUS;

String distanceStr = String.valueOf(distance);

return distanceStr;

}

/**

* 获取当前用户一定距离以内的经纬度值

* 单位米 return minLat

* 最小经度 minLng

* 最小纬度 maxLat

* 最大经度 maxLng

* 最大纬度 minLat

*/

public static Map getAround(String latStr, String lngStr, String raidus) {

Map map = new HashMap();

Double latitude = Double.parseDouble(latStr);// 传值给经度

Double longitude = Double.parseDouble(lngStr);// 传值给纬度

Double degree = (24901 * 1609) / 360.0; // 获取每度

double raidusMile = Double.parseDouble(raidus);

Double mpdLng = Double.parseDouble((degree * Math.cos(latitude * (Math.PI / 180))+"").replace("-", ""));

Double dpmLng = 1 / mpdLng;

Double radiusLng = dpmLng * raidusMile;

//获取最小经度

Double minLat = longitude - radiusLng;

// 获取最大经度

Double maxLat = longitude + radiusLng;

Double dpmLat = 1 / degree;

Double radiusLat = dpmLat * raidusMile;

// 获取最小纬度

Double minLng = latitude - radiusLat;

// 获取最大纬度

Double maxLng = latitude + radiusLat;

map.put("minLat", minLat+"");

map.put("maxLat", maxLat+"");

map.put("minLng", minLng+"");

map.put("maxLng", maxLng+"");

return map;

}

public static void main(String[] args) {

//济南国际会展中心经纬度:117.11811  36.68484

//趵突泉:117.00999000000002  36.66123

System.out.println(getDistance("116.97265","36.694514","116.597805","36.738024"));

System.out.println(getAround("117.11811", "36.68484", "13000"));

//117.01028712333508(Double), 117.22593287666493(Double),

//36.44829619896034(Double), 36.92138380103966(Double)

}

}

给定经纬度计算距离_根据经纬度计算两地间的距离相关推荐

  1. java获取一定距离以内的经纬度值_java 根据经纬度计算两地间的距离

    现在网站上都流行贴出地理坐标位置,可以看出精度纬度,如果再结合GPS, 就可以定位出用户所在地的经纬度,自然可以计算出大概距离,下面是一段小代码,根据经纬度坐标直接计算出两地间的距离package c ...

  2. 在C++中计算经纬度(附34个城市两两间的距离计算结果)

    文章目录 计算说明 C++实现代码 计算结果 计算说明 本文使用C++根据输出两个城市的经纬度计算两地间的距离. 几点说明: 经度为E,如果开头为W则取负值: 纬度为N,如果开头为S则取负值: 为了避 ...

  3. 给定经纬度计算距离_通过经纬度坐标计算距离的方法(经纬度距离计算)ZZ

    通过经纬度坐标计算距离的方法(经纬度距离计算) 最近在网上搜索"通过经纬度坐标计算距离的方法",发现网上大部分都是如下的代码: #define PI 3.14159265 stat ...

  4. 给定经纬度计算距离_根据经纬度计算两点间距离JAVA版

    本文最后更新于2019-08-31,已超过 1年没有更新,如果文章内容.图片或者下载资源失效,请留言反馈,我会及时处理,谢谢! 温馨提示:本文共2518个字,读完预计7分钟. import java. ...

  5. 给定经纬度计算距离_根据经纬度计算地球上两点之间的距离js实现代码

    利用JS实现的根据经纬度计算地球上两点之间的距离 最近用到了根据经纬度计算地球表面两点间距离的公式,然后就用JS实现了一下. 计算地球表面两点间的距离大概有两种办法. 第一种是默认地球是一个光滑的球面 ...

  6. matlab 韩明距离_使用Matlab计算各种距离Distance

    计算距离的需求有两种: 一种是给定一个特征集合X,然后计算Pairwise距离矩阵,那么可使用D=pdist(X,distance)的方式: 另一种是给定两个对应的特征集合X和Y,然后计算X与Y对应的 ...

  7. python 文本相似度计算函数_四种计算文本相似度的方法对比

    作者:Yves Peirsman 编译:Bing 编者按:本文作者为Yves Peirsman,是NLP领域的专家.在这篇博文中,作者比较了各种计算句子相似度的方法,并了解它们是如何操作的.词嵌入(w ...

  8. python 流式计算框架_流式计算的三种框架:Storm、Spark和Flink

    我们知道,大数据的计算模式主要分为批量计算(batch computing).流式计算(stream computing).交互计算(interactive computing).图计算(graph ...

  9. 太阳高度角计算题_太阳高度角的计算问题

    太阳高度角的计算问题 (2009-10-07 20:30:33) 标签: 杂谈 太阳高度角的计算问题是高一地理第一单元重点内容之一 重要程度仅次于日期时间计算问题 应 gst 的要求,我来讲解一下这个 ...

最新文章

  1. Rhel6服务器时间任务浅谈
  2. 80后应该面对的问题
  3. 连续整数的和(51Nod-1138)
  4. springboot-mybatis-多数据源
  5. [CodeForces - 276A] Lunch Rush
  6. Python多线程学习资料1
  7. 五子棋AI算法(一)
  8. 如何将已加好的脚注或尾注转换成中括号“[]”格式
  9. Effective+Java+中文版
  10. 计算机二级电子表格使用技巧36种,Excel表格中最经典的36个小技巧,全在这儿了...
  11. iOS11新增的Files文件管理器应用
  12. php 表情,PHP处理emoji表情
  13. SpringCloud Tencent 全套解决方案
  14. sdiv和srem问题解决
  15. infor接口调用,okhttp不同版本使用
  16. 【Spring框架一】——Spring框架简介
  17. php 解析pathinfo 类
  18. 为什么会有高防CDN的出现?
  19. 这本C语言入门书被翻译成五种语言出版,如今迎来了中文版第17版
  20. 利用电影贴吧引流轻松变现,超适合新手

热门文章

  1. C语言基础 阶乘:输入一个数,输出它的阶乘。
  2. python发送邮件一
  3. self-redemption
  4. BUUCTF解题十一道(04)
  5. linux下的mkfifo 命令
  6. word中插入“分节符-下一页”后,打印预览会多出空白页的解决方法
  7. windows环境安装lzo和python-lzo
  8. 简单对数不等式的证明
  9. python求自然对数_计算自然对数的算法
  10. 求100以内所有的素数和