GPS距离计算和位置获取

需求:
1、知道地球上两点GPS经纬度坐标,根据两点坐标获取坐标位置。
2、使用高德地图,根据经纬度获取实时位置。

package com.bdms.utils;import com.alibaba.fastjson.JSONObject;import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;
import java.util.HashMap;
import java.util.Map;
import java.util.Properties;/*** GPS操作工具*/
public class GPSHelperUtils {/*** 地球赤道半径(单位m)*/private static final double EARTH_RADIUS = 6371.393;/*** 高德地图请求地址和key*/private static String aMapUrl = "https://restapi.amap.com/v3/geocode/regeo?s=rsv3&language=zh_cn";/*** 注册高德地图,去高德地图官网获取*/private static String aMapKey = "xxxxxxxxxxxxx";/*** 坐标位置转换为弧度* @return*/private static double rad(double data) {return Math.toRadians(data);}/*** 根据坐标获取两点距离* @param lon1* @param lat1* @param lon2* @param lat2* @return 返回距离单位m*/public static double getDistance(double lon1,double lat1,double lon2,double lat2) {double distance = 0;try {double lon = rad(lon2) - rad(lon1);lon = lon > 0 ? lon : -lon;double radLat1 = rad(lat1);double radLat2 = rad(lat2);double lat = radLat2 - radLat1;lat = lat > 0 ? lat : -lat;//计算两个做坐标之间的距离//计算公式借鉴了其它博客,据说是从谷歌地图源码获取,自测计算结果准确distance = Math.asin(Math.sqrt(Math.pow(Math.sin(lat / 2), 2) +Math.cos(radLat2) * Math.cos(radLat1) * Math.pow(Math.sin(lon / 2), 2)));distance = distance * EARTH_RADIUS * 1000;} catch (Exception e) {e.printStackTrace();}return distance;}/*** 根据经纬度获取坐标位置* @param lon* @param lat* @return*/public static String getAddress(double lon,double lat){try {getAMapUrl();StringBuilder resultData = new StringBuilder();StringBuilder https = new StringBuilder(aMapUrl);https.append("&key=" + aMapKey);//经纬度地址StringBuilder localhost = new StringBuilder("&location="+lon+","+lat);String url = https.append(localhost).toString();//拼接出来的地址URL myURL = null;URLConnection httpsConn = null;try {myURL = new URL(url);} catch (MalformedURLException e) {e.printStackTrace();}InputStreamReader insr = null;BufferedReader br = null;try {httpsConn = myURL.openConnection();// 不使用代理if (httpsConn != null) {insr = new InputStreamReader(httpsConn.getInputStream(), "UTF-8");br = new BufferedReader(insr);String data = null;while ((data = br.readLine()) != null) {resultData.append(data);}}} catch (IOException e) {e.printStackTrace();} finally {if (insr != null) {insr.close();}if (br != null) {br.close();}}/*** 成返回数格式* {"status":"1","info":"OK","infocode":"10000","regeocodes":[{"formatted_address":"湖北省武汉市xxxx",* "addressComponent":{"country":"中国","province":"湖北省","city":"武汉市","citycode":"027","district":"xxx","adcode":"420111","township":"xxx","towncode":"420111080000",* "neighborhood":{"name":[],"type":[]},"building":{"name":"xxx","type":"商务住宅;楼宇;商务写字楼"},* "streetNumber":{"street":"xxx","number":"4号","location":"114.432143,30.505003","direction":"东","distance":"5.09943"},* "businessAreas":[{"location":"114.409500,30.495205","name":"xxx","id":"420111"},{"location":"114.414914,30.495456","name":"光谷","id":"420111"}]}}]}*/if (!StringUtils.isEmpty(resultData.toString())) {Map<String,Object> resultMap = JSONObject.parseObject(resultData.toString(),Map.class);if (resultMap.containsKey("status") && resultMap.get("status").toString().equals("1") && resultMap.containsKey("regeocode")) {Map<String,Object> recordMap = JSONObject.parseObject(resultMap.get("regeocode").toString(),Map.class);return recordMap.get("formatted_address").toString();}}} catch (IOException e) {e.printStackTrace();}return null;}}

自测没有问题,可以使用。

根据GPS经纬度计算距离和位置获取相关推荐

  1. APP Inventor中如何利用GPS经纬度计算GPS距离、速度、方向

         最近有空时研究了一下MIT APP InVentor,这是一个原来google验室的项目,目的是为了给Andriod APP的开发者提供一种简便快捷的开发模式,但后来该项目被停止,2012年 ...

  2. mysql 计算gps坐标距离_mysql、sqlserver和php计算GPS经纬度坐标距离

    摘要:mysql.sqlserver.oracle和php计算GPS经纬度坐标距离 mysql计算GPS经纬度距离DELIMITER $$ CREATEDEFINER=`root`@`localhos ...

  3. mysql数据库根据经纬度计算距离,获取离我最近的地点列表,并排序。附近的人,附近商店等功能,一个sql就搞定

    mysql数据库根据经纬度计算距离,获取离我最近的地点列表,并排序 附近的人,附近商家等功能,顺序显示顺序是由近到远的,便利用户查看和判断,sql实现如下. StringBuilder sb=new ...

  4. 根据两点经纬度计算距离

    根据两点经纬度计算距离 这些经纬线是怎样定出来的呢?地球是在不停地绕地轴旋转(地轴是一根通过地球南北两极和地球中心的 假想线),在地球中腰画一个与地轴垂直的大圆圈,使圈上的每一点都和南北两极的距离相等 ...

  5. 百度地图经纬度计算距离(Java)

    百度地图Java经纬度计算距离 阅读百度地图Web服务api文档 Maven依赖 百度地图经纬度工具类 阅读百度地图Web服务api文档 Maven依赖 <!--baidu--><d ...

  6. 根据两点间的经纬度计算距离

    /** * @desc 根据两点间的经纬度计算距离 * @param float $lat 纬度值 * @param float $lng 经度值 */ function getDistance($l ...

  7. php 经纬度 距离排序,php mysql 根据经纬度计算距离和排序

    #1.两点距离(1.4142135623730951) select st_distance(point(0,0),point(1,1)); select st_distance(point (120 ...

  8. mysql,php和js根据经纬度计算距离

    根据经纬度计算距离公式 图片来自互联网 对上面的公式解释如下: Lung1 Lat1表示A点经纬度, Lung2 Lat2表示B点经纬度: a=Lat1 – Lat2 为两点纬度之差 b=Lung1 ...

  9. 经纬度计算距离的公式

    经纬度计算距离的公式是: 设点A(lat1, lon1),点B(lat2, lon2) d = R * arccos(sin(lat1) * sin(lat2) + cos(lat1) * cos(l ...

  10. php mysql 经纬度_mysql,php和js根据经纬度计算距离

    根据经纬度计算距离公式 图片来自互联网 对上面的公式解释如下: Lung1 Lat1表示A点经纬度, Lung2 Lat2表示B点经纬度: a=Lat1 – Lat2 为两点纬度之差 b=Lung1 ...

最新文章

  1. 图像轮廓、凸包、图像的矩、分水岭算法、图像修补
  2. MySQL 数据库常用命令—where like union 排序 分组 连接
  3. Swing开发界面时的一个bug复盘
  4. SpringBoot的配置文件加载顺序和使用方式
  5. UVA 1645 - Count(简单DP)
  6. 数据结构例程——哈希表及其运算的实现
  7. ES6环境搭建及react-router学习
  8. 电脑解锁后黑屏有鼠标_电脑开机黑屏只有鼠标如何解决
  9. Java常见面试题:Oracle JDK 和 OpenJDK 的区别?
  10. C语言实现约瑟夫环代码
  11. Jenkins和Docker在HULK的落地实践
  12. WIndows编译MAME0.184
  13. 百度云直链获取优化版
  14. 视频号如何发表视频呢?
  15. css-超出内容省略号
  16. 用opencv及cuda编译好的dakrnet训练yolo4
  17. 私有存储云如何构建?
  18. C语言编程题————编写代码,演示多个字符从两边移动,向中间聚拢
  19. 自动升降压5-40V多串超级电容充电芯片和解决方案
  20. 什么是304不锈钢?

热门文章

  1. 用html制作QQ彩贝
  2. 压力传感器的常见螺纹
  3. 《麦肯锡方法》读书笔记10
  4. 数学建模论文书写总结
  5. 4款U盘随身操作系统推荐
  6. Flash Lite作为S40和S60系列上的特性出现在技术规范中
  7. springboot项目控制层的接口注入报错
  8. 什么是计算机病毒?是怎么产生的?
  9. matlab阶乘函数、排列组合函数、数组求和、未定义变量带入计算,简化结果值
  10. 证书制作,各个环节的原理以及推送证书制作,和如何为推送服务器提供证书