android 经纬度方向,Android获取经纬度、计算距离、方位角
最近在Android上作GPS的东西,获取经纬度、计算距离、方位角,感受在搞GIS样。固然,玩笑了,玩玩而已,稍微总结一下。html
经度指示南北方向,纵向。android
纬度指示东西方向,横向.git
获取经纬度
使用GPS权限:ide
工具
Android提供LocationManager和Location,能够方便的得到经纬度、海拔等位置。使用LocationManager来得到位置管理类,从而能够得到历史GPS信息以及位置变化的监听注册;使用Location来得到具体的位置信息。代码以下:ui
locationm= (LocationManager) getSystemService(LOCATION_SERVICE);google
Criteria criteria =newCriteria();spa
criteria.setAccuracy(Criteria.ACCURACY_FINE);excel
criteria.setAltitudeRequired(false);htm
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获取经纬度、计算距离、方位角相关推荐
- android 高德地图定位获取经纬度
android 高德地图定位获取经纬度 之前开发定位都是集成百度的,领导说要用高德的,没办法干吧,官方的文档太详细了看着真累. 我们得先去官网注册开发者账号,创建应用,填写自己项目的包名和SHA1, ...
- Android开发:LocationManager获取经纬度及定位过程(附demo)
其实LocationManager,Geocoder这些Android API给我们提供的这些类就可以满足了.下面笔者就来讲讲如何利用LocationManager获取经纬度,并利用Geocoder将 ...
- Android通过手机GPS获取经纬度方法
android 调用gps获取经纬度的方法大同小异,实则差不了多少.但是使用起来,有的方法看起来很冗杂,而且很不好用.下面为大家介绍中很简单的方法,而且是实时监听位置的变化. 首先定义: privat ...
- android 显示线方向,Android recycleview 分割线彩蛋
我收集了一些学习用的资料,其中包含了很多学习,面试,中高进阶fluuter资料,还有很多视频详解,如果有同学想进一步了解,详情请看文末.也欢迎各路大神门前来装X. 首先上问题 怎么做? 当我们空余时间 ...
- android机器人方向,Android绘制机器人小实例
本文实例通过前面学过的Paint.Canvas等2D绘画技术来实现在手机屏幕上绘制Android机器人. 具体代码实现和效果: 用来显示自定义的绘图类的布局文件 res/layout/main.xml ...
- android 图片方向,Android图片处理:识别图像方向并显示
在Android中使用ImageView显示图片的时候发现图片显示不正.方向偏了或者倒过来了. 解决问题非常自然想到的分两步走: 1.自己主动识别图像方向,计算旋转角度. 2.对图像进行旋转并显示. ...
- android高德方向,Android 高德地图进阶功能
本文接本人上一篇文章:Android APP接入高德SDK问题与记录,如果还不熟悉高德地图接入,可以先阅读这篇文章. 1 切换图层及显示路况 通过设置mapType,可以切换地图的类型: aMap.m ...
- android 摄像头方向,android:调整摄像头方向
在代码中可直接调用该方法. 参数:activity 为当前上下文: cameraId 为摄像头的ID,及前置摄像头或后置摄像头的ID import android.hardware.Camera; C ...
- android高德方向,Android高德地图填坑
项目中用到地图的地方越来越多,从O2O商城.出行.交通.单车等无处不在使用地图,以下是在多个项目中集成高德地图常用的几个功能点,及填坑. 定位功能 小蓝点策略 myLocationStyle.myLo ...
最新文章
- Domino下邮箱用户数据库限额自助释放物理空间
- 基础练习 查找整数 c语言
- Android优化系列之apk瘦身
- 20个堪称神器的Linux命令行软件
- 欧文分校的计算机科学博士,UCI的CS「加州大学欧文分校计算机科学系」
- 移动端返回上一页实现方法
- XML与Java 解析方式
- 一文带你详尽剖析Miracast投屏开发和调试
- HDOJ 2027 统计元音
- UC浏览器 Android8.0,五大特色解析 UC浏览器8.0安卓版评测
- 方维众筹1.61 php5.5,最新方维众筹1.61完美解密版源码 综合型众筹产品+理财+公益+股权+微信+商城+PC+WAP运营版...
- Activiti6--入门学习--中间事件
- sqlserver Month()函数取日期不足两位的加 0
- 使用 Nginx 实现 URL 的重定向
- PaaS平台设计思想
- 堆漏洞挖掘中的malloc_consolidate与FASTBIN_CONSOLIDATION_THRESHOLD
- java上机实验作业 编写汽车类car,Java代写:CS103 Car Rental代做留学生SQL实验作业...
- 安卓手机怎么下载java游戏
- python金融分析-计算对数收益率及其波动率并画图
- 在linux上用cifs挂载nas盘