android地图方位角_Android获取经纬度、计算距离、方位角
最近在Android上做GPS的東西,獲取經緯度、計算距離、方位角,感覺在搞GIS樣。當然,玩笑了,玩玩而已,稍微總結一下。
經度指示南北方向,縱向。
緯度指示東西方向,橫向.
獲取經緯度
使用GPS權限:
Android提供LocationManager和Location,可以方便的獲得經緯度、海拔等位置。使用LocationManager來獲得位置管理類,從而可以獲得歷史GPS信息以及位置變化的監聽注冊;使用Location來獲得具體的位置信息。代碼如下:
locationm= (LocationManager) getSystemService(LOCATION_SERVICE);
Criteria criteria =newCriteria();
criteria.setAccuracy(Criteria.ACCURACY_FINE);
criteria.setAltitudeRequired(false);
criteria.setBearingRequired(false);
criteria.setCostAllowed(true);
criteria.setPowerRequirement(Criteria.POWER_LOW);
String provider =locationm.getBestProvider(criteria,true);
Location location =locationm.getLastKnownLocation(provider);
//獲得上次的記錄
gps_loc(location);
LocationListener GPS_listener =newLocationListener() {
//監聽位置變化,實時獲取位置信息
@Override
publicvoidonStatusChanged(String provider,intstatus,
Bundle extras) {
//TODOAuto-generated method stub
}
@Override
publicvoidonProviderEnabled(String provider) {
//TODOAuto-generated method stub
}
@Override
publicvoidonProviderDisabled(String provider) {
//TODOAuto-generated method stub
}
@Override
publicvoidonLocationChanged(Location location) {
//TODOAuto-generated method stub
//位置發生改變時
gps_loc(location);
}
};
locationm.requestLocationUpdates(provider, 1000, 0, GPS_listener);
}
//獲得自己位置
privatevoidgps_loc(Location location) {
if(location !=null) {
self_weidu= location.getLatitude();
self_jindu= location.getLongitude();
}else{
self_weidu= 0;
self_jindu= 0;
}
}
兩點經緯度,計算距離
1.Lat1 Lung1表示A點經緯度,Lat2 Lung2表示B點經緯度;
2.a=Lat1–Lat2為兩點緯度之差b=Lung1 -Lung2為兩點經度之差;
3.6378.137為地球半徑,單位為千米;
計算出來的結果單位為千米。
我作為不明真相的群眾就圍觀轉一下maps的代碼:計算的結果是米為單位。
//計算兩點距離
privatefinaldoubleEARTH_RADIUS= 6378137.0;
privatedoublegps2m(doublelat_a,doublelng_a,doublelat_b,doublelng_b) {
doubleradLat1 = (lat_a * Math.PI/ 180.0);
doubleradLat2 = (lat_b * Math.PI/ 180.0);
doublea = radLat1 - radLat2;
doubleb = (lng_a - lng_b) * Math.PI/ 180.0;
doubles = 2 * Math.asin(Math.sqrt(Math.pow(Math.sin(a / 2), 2)
+ Math.cos(radLat1) * Math.cos(radLat2)
* Math.pow(Math.sin(b / 2), 2)));
s = s *EARTH_RADIUS;
s = Math.Round(s * 10000) / 10000;
returns;
}
兩點經緯度,計算方位角
方位角這個玩意更加是不知道計算公式,在谷歌上搜了兩個鐘頭也沒找到公式。在一個移動通信論壇有工具,只是下不了,非得邀請碼才注冊,和那個什么社區一樣了。最后在下了一個excel,用它的計算公式寫了一個。
計算方位角pab,
其中lat_a, lng_a是A的緯度和經度;lat_b, lng_b是B的緯度和經度。代碼如下:
//計算方位角pab。
privatedoublegps2d(doublelat_a,doublelng_a,doublelat_b,doublelng_b) {
doubled = 0;
lat_a=lat_a*Math.PI/180;
lng_a=lng_a*Math.PI/180;
lat_b=lat_b*Math.PI/180;
lng_b=lng_b*Math.PI/180;
d=Math.sin(lat_a)*Math.sin(lat_b)+Math.cos(lat_a)*Math.cos(lat_b)*Math.cos(lng_b-lng_a);
d=Math.sqrt(1-d*d);
d=Math.cos(lat_b)*Math.sin(lng_b-lng_a)/d;
d=Math.asin(d)*180/Math.PI;
//d = Math.round(d*10000);
returnd;
}
依然不明白方位角的計算公式和原理,求達人指導。
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的android地图方位角_Android获取经纬度、计算距离、方位角的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 一元享移动怎么样_中国移动放大招!月租9
- 下一篇: mysql操作库命令_MYSQL数据库-