计算经纬度间的距离公里数
16lz
2021-01-26
Google的Geocoding服务功能:
1. 查询某地址的经纬度
2. 查询某经纬度的具体地址
Android的Geocoding替代品
//根据地址查询经纬度的网址及其解释
http://maps.googleapis.com/maps/api/geocode/json?address=SFO&sensor=false ---json是表示返回的数据类型,可以改为xml。address是输入的位置。sensor标识请求是否来源于一个设备的传感器。language指定查询结果的语言
//根据地址查询经纬度的网址及其解释,与上面不同的是这里有一个区域间范围
http://maps.googleapis.com/maps/api/geocode/json?address=SFO&bounds=34.17,-188.6045|34.236,-118.500996&sensor=false ---bounds是区间。sensor标识请求是否来源于一个设备的传感器。language指定查询结果的语言
//根据地址查询经纬度的网址及其解释,如与上面不同的是这里有国家代码
http://maps.googleapis.com/maps/api/geocode/json?address=SFO&sensor=false®ion=es ---region是国家代码。sensor标识请求是否来源于一个设备的传感器。language指定查询结果的语言
//根据经纬度查询地址的网址及其解释
http://maps.googleapis.com/maps/api/geocode/json?latlng=40.714224,-73.961452&sensor=false ---latlng=40.714224,-73.961452经纬度数据。sensor标识请求是否来源于一个设备的传感器。language指定查询结果的语言
计算两点经纬度间的举例
public double getDistance(double lat1, double lon1, double lat2, double lon2) {
float[] results=new float[1];
Location.distanceBetween(lat1, lon1, lat2, lon2, results);
return results[0];
}
在其他设备若没有类似android的Location的distanceBetween方法开采用如下代码获取:
double distance(double lat1, double lon1, double lat2, double lon2) {
double theta = lon1 - lon2;
double dist = Math.sin(deg2rad(lat1)) * Math.sin(deg2rad(lat2))
+ Math.cos(deg2rad(lat1)) * Math.cos(deg2rad(lat2))
* Math.cos(deg2rad(theta));
dist = Math.acos(dist);
dist = rad2deg(dist);
double miles = dist * 60 * 1.1515;
return miles;
}
//将角度转换为弧度
static double deg2rad(double degree) {
return degree / 180 * Math.PI;
}
//将弧度转换为角度
static double rad2deg(double radian) {
return radian * 180 / Math.PI;
}
1. 查询某地址的经纬度
2. 查询某经纬度的具体地址
Android的Geocoding替代品
//根据地址查询经纬度的网址及其解释
http://maps.googleapis.com/maps/api/geocode/json?address=SFO&sensor=false ---json是表示返回的数据类型,可以改为xml。address是输入的位置。sensor标识请求是否来源于一个设备的传感器。language指定查询结果的语言
//根据地址查询经纬度的网址及其解释,与上面不同的是这里有一个区域间范围
http://maps.googleapis.com/maps/api/geocode/json?address=SFO&bounds=34.17,-188.6045|34.236,-118.500996&sensor=false ---bounds是区间。sensor标识请求是否来源于一个设备的传感器。language指定查询结果的语言
//根据地址查询经纬度的网址及其解释,如与上面不同的是这里有国家代码
http://maps.googleapis.com/maps/api/geocode/json?address=SFO&sensor=false®ion=es ---region是国家代码。sensor标识请求是否来源于一个设备的传感器。language指定查询结果的语言
//根据经纬度查询地址的网址及其解释
http://maps.googleapis.com/maps/api/geocode/json?latlng=40.714224,-73.961452&sensor=false ---latlng=40.714224,-73.961452经纬度数据。sensor标识请求是否来源于一个设备的传感器。language指定查询结果的语言
计算两点经纬度间的举例
public double getDistance(double lat1, double lon1, double lat2, double lon2) {
float[] results=new float[1];
Location.distanceBetween(lat1, lon1, lat2, lon2, results);
return results[0];
}
在其他设备若没有类似android的Location的distanceBetween方法开采用如下代码获取:
double distance(double lat1, double lon1, double lat2, double lon2) {
double theta = lon1 - lon2;
double dist = Math.sin(deg2rad(lat1)) * Math.sin(deg2rad(lat2))
+ Math.cos(deg2rad(lat1)) * Math.cos(deg2rad(lat2))
* Math.cos(deg2rad(theta));
dist = Math.acos(dist);
dist = rad2deg(dist);
double miles = dist * 60 * 1.1515;
return miles;
}
//将角度转换为弧度
static double deg2rad(double degree) {
return degree / 180 * Math.PI;
}
//将弧度转换为角度
static double rad2deg(double radian) {
return radian * 180 / Math.PI;
}
更多相关文章
- Android传感器---Motion Sensor(三)
- Android开发——SQLite数据库(二)android studio创建数据库,进行插
- Android传感器分析 seneor
- Android获取定位权限,获取设备所在的经纬度
- Android(安卓)API Guides---Environment Sensors
- Android集成百度定位以及导航详解
- Android(安卓)百度地图 SDK v3.4.0 定位与结合方向传感器
- Android:用 SQLite 实现 用户的登录查询功能(详解+效果图)
- Android(安卓)手机app三种方法获取定位地址(自带API,外接SDK,获取外