根据GPS经纬度计算距离和位置获取
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经纬度计算距离和位置获取相关推荐
- APP Inventor中如何利用GPS经纬度计算GPS距离、速度、方向
最近有空时研究了一下MIT APP InVentor,这是一个原来google验室的项目,目的是为了给Andriod APP的开发者提供一种简便快捷的开发模式,但后来该项目被停止,2012年 ...
- mysql 计算gps坐标距离_mysql、sqlserver和php计算GPS经纬度坐标距离
摘要:mysql.sqlserver.oracle和php计算GPS经纬度坐标距离 mysql计算GPS经纬度距离DELIMITER $$ CREATEDEFINER=`root`@`localhos ...
- mysql数据库根据经纬度计算距离,获取离我最近的地点列表,并排序。附近的人,附近商店等功能,一个sql就搞定
mysql数据库根据经纬度计算距离,获取离我最近的地点列表,并排序 附近的人,附近商家等功能,顺序显示顺序是由近到远的,便利用户查看和判断,sql实现如下. StringBuilder sb=new ...
- 根据两点经纬度计算距离
根据两点经纬度计算距离 这些经纬线是怎样定出来的呢?地球是在不停地绕地轴旋转(地轴是一根通过地球南北两极和地球中心的 假想线),在地球中腰画一个与地轴垂直的大圆圈,使圈上的每一点都和南北两极的距离相等 ...
- 百度地图经纬度计算距离(Java)
百度地图Java经纬度计算距离 阅读百度地图Web服务api文档 Maven依赖 百度地图经纬度工具类 阅读百度地图Web服务api文档 Maven依赖 <!--baidu--><d ...
- 根据两点间的经纬度计算距离
/** * @desc 根据两点间的经纬度计算距离 * @param float $lat 纬度值 * @param float $lng 经度值 */ function getDistance($l ...
- php 经纬度 距离排序,php mysql 根据经纬度计算距离和排序
#1.两点距离(1.4142135623730951) select st_distance(point(0,0),point(1,1)); select st_distance(point (120 ...
- mysql,php和js根据经纬度计算距离
根据经纬度计算距离公式 图片来自互联网 对上面的公式解释如下: Lung1 Lat1表示A点经纬度, Lung2 Lat2表示B点经纬度: a=Lat1 – Lat2 为两点纬度之差 b=Lung1 ...
- 经纬度计算距离的公式
经纬度计算距离的公式是: 设点A(lat1, lon1),点B(lat2, lon2) d = R * arccos(sin(lat1) * sin(lat2) + cos(lat1) * cos(l ...
- php mysql 经纬度_mysql,php和js根据经纬度计算距离
根据经纬度计算距离公式 图片来自互联网 对上面的公式解释如下: Lung1 Lat1表示A点经纬度, Lung2 Lat2表示B点经纬度: a=Lat1 – Lat2 为两点纬度之差 b=Lung1 ...
最新文章
- 图像轮廓、凸包、图像的矩、分水岭算法、图像修补
- MySQL 数据库常用命令—where like union 排序 分组 连接
- Swing开发界面时的一个bug复盘
- SpringBoot的配置文件加载顺序和使用方式
- UVA 1645 - Count(简单DP)
- 数据结构例程——哈希表及其运算的实现
- ES6环境搭建及react-router学习
- 电脑解锁后黑屏有鼠标_电脑开机黑屏只有鼠标如何解决
- Java常见面试题:Oracle JDK 和 OpenJDK 的区别?
- C语言实现约瑟夫环代码
- Jenkins和Docker在HULK的落地实践
- WIndows编译MAME0.184
- 百度云直链获取优化版
- 视频号如何发表视频呢?
- css-超出内容省略号
- 用opencv及cuda编译好的dakrnet训练yolo4
- 私有存储云如何构建?
- C语言编程题————编写代码,演示多个字符从两边移动,向中间聚拢
- 自动升降压5-40V多串超级电容充电芯片和解决方案
- 什么是304不锈钢?