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;
}
计算经纬度间的距离公里数
猜你喜欢
转载自gegaosong.iteye.com/blog/1779308
今日推荐
周排行