日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

android地图方位角_Android获取经纬度、计算距离、方位角

發布時間:2024/9/27 Android 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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获取经纬度、计算距离、方位角的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。