最近在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获取经纬度、计算距离、方位角相关推荐

  1. android 高德地图定位获取经纬度

    android 高德地图定位获取经纬度 之前开发定位都是集成百度的,领导说要用高德的,没办法干吧,官方的文档太详细了看着真累. 我们得先去官网注册开发者账号,创建应用,填写自己项目的包名和SHA1, ...

  2. Android开发:LocationManager获取经纬度及定位过程(附demo)

    其实LocationManager,Geocoder这些Android API给我们提供的这些类就可以满足了.下面笔者就来讲讲如何利用LocationManager获取经纬度,并利用Geocoder将 ...

  3. Android通过手机GPS获取经纬度方法

    android 调用gps获取经纬度的方法大同小异,实则差不了多少.但是使用起来,有的方法看起来很冗杂,而且很不好用.下面为大家介绍中很简单的方法,而且是实时监听位置的变化. 首先定义: privat ...

  4. android 显示线方向,Android recycleview 分割线彩蛋

    我收集了一些学习用的资料,其中包含了很多学习,面试,中高进阶fluuter资料,还有很多视频详解,如果有同学想进一步了解,详情请看文末.也欢迎各路大神门前来装X. 首先上问题 怎么做? 当我们空余时间 ...

  5. android机器人方向,Android绘制机器人小实例

    本文实例通过前面学过的Paint.Canvas等2D绘画技术来实现在手机屏幕上绘制Android机器人. 具体代码实现和效果: 用来显示自定义的绘图类的布局文件 res/layout/main.xml ...

  6. android 图片方向,Android图片处理:识别图像方向并显示

    在Android中使用ImageView显示图片的时候发现图片显示不正.方向偏了或者倒过来了. 解决问题非常自然想到的分两步走: 1.自己主动识别图像方向,计算旋转角度. 2.对图像进行旋转并显示. ...

  7. android高德方向,Android 高德地图进阶功能

    本文接本人上一篇文章:Android APP接入高德SDK问题与记录,如果还不熟悉高德地图接入,可以先阅读这篇文章. 1 切换图层及显示路况 通过设置mapType,可以切换地图的类型: aMap.m ...

  8. android 摄像头方向,android:调整摄像头方向

    在代码中可直接调用该方法. 参数:activity 为当前上下文: cameraId 为摄像头的ID,及前置摄像头或后置摄像头的ID import android.hardware.Camera; C ...

  9. android高德方向,Android高德地图填坑

    项目中用到地图的地方越来越多,从O2O商城.出行.交通.单车等无处不在使用地图,以下是在多个项目中集成高德地图常用的几个功能点,及填坑. 定位功能 小蓝点策略 myLocationStyle.myLo ...

最新文章

  1. Domino下邮箱用户数据库限额自助释放物理空间
  2. 基础练习 查找整数 c语言
  3. Android优化系列之apk瘦身
  4. 20个堪称神器的Linux命令行软件
  5. 欧文分校的计算机科学博士,UCI的CS「加州大学欧文分校计算机科学系」
  6. 移动端返回上一页实现方法
  7. XML与Java 解析方式
  8. 一文带你详尽剖析Miracast投屏开发和调试
  9. HDOJ 2027 统计元音
  10. UC浏览器 Android8.0,五大特色解析 UC浏览器8.0安卓版评测
  11. 方维众筹1.61 php5.5,最新方维众筹1.61完美解密版源码 综合型众筹产品+理财+公益+股权+微信+商城+PC+WAP运营版...
  12. Activiti6--入门学习--中间事件
  13. sqlserver Month()函数取日期不足两位的加 0
  14. 使用 Nginx 实现 URL 的重定向
  15. PaaS平台设计思想
  16. 堆漏洞挖掘中的malloc_consolidate与FASTBIN_CONSOLIDATION_THRESHOLD
  17. java上机实验作业 编写汽车类car,Java代写:CS103 Car Rental代做留学生SQL实验作业...
  18. 安卓手机怎么下载java游戏
  19. python金融分析-计算对数收益率及其波动率并画图
  20. 在linux上用cifs挂载nas盘

热门文章

  1. 运行程序提示access violation at address的解决方法
  2. Private Set Intersection(PSI)简介和资料分享
  3. SEO人员,都有哪些类型?
  4. 整车控制单元(VCU)
  5. 大学生计算机专业顶岗实习日记24篇通用
  6. 【HDU】1283 最简单的计算机
  7. 2022 极术通讯-基于 “星辰”STAR-MC1处理器的航芯ACM32G103芯片及应用方案
  8. 招聘时HR最想看见到的简历有哪几种呢
  9. Mysql数据库调优——分区
  10. ZQOJ 1141: 进制转换