本篇讨论讨论如何根据已知两点的坐标,量算两点之间的球面距离。
首先,了解一些Android地理定位的基础知识,Android关于地理定位的API全部位于android.location包内,包括以下几个主要类:
LocationManager:本类提供访问定位服务的功能,也提供获取最佳定位提供者的功能。
LocationProvider:本类是定位提供者的抽象类。定位提供者具备周期性报告设备地理位置的功能。
LocationListener:提供地理位置信息发僧改变时的回调功能。需要事先在定位管理器中注册监听器对象。
Criteria:该类使得应用能够通过在LocationProvider中设置的属性来选择合适的定位提供者。
Geocoder:用处理地理编码和反向地理编码的类。
其次,了解使用地理定位的流程:
获取LocationManger的实例,在Android中,通过getSystemService()方法获得。然后注册一个更新函数locationManager.requestLocationUpdate(LocationManager.GPS_Provider,0,0,locationManager);
第一个参数是将当前Activity页面注册给定位服务提供者
第二个参数是回调监听的时间间隔
第三个参数是回调监听的距离间隔
第四个参数是实例化的位置监听
一、在配置(AndroidManifest.xml)文件中设置程序的访问权限
1、允许应用程序访问网络:
<users-permission android:name="android.permission.INTERNET" />
2、允许应用程序访问精确定位:
<users-permission android:name="android.permission.ACCESS_FINE_LOCATION /">
二、实现位置函数
1、获得LocationManager对象
LocationManager locationManager = (LocationManager)Distance.this.getSystemService(LOCATION_SERVICE);
2、绑定位置监听器
locationManager.requestLocationUpdate(LocationManager.GPS_PROVIDER,0,0,new myListener());
3、实现时间监听接口
private class myListener implements LocationListener
接口中有四个重要函数:
onLocationChanged(Location location):当坐标改变时出发此函数
onProviderDisabled(String provider):Provider禁用时出发此函数,如GPS关闭。
onProviderEnable(String provider):Provider启用时出发此函数,如GPS打开。
onStatusChanged(String provider,int status,Bundle extras):Provider的状态在可用、暂时不可用和无服务三个状态直接切换时出发此函数。
本篇在实现此接口中仅仅实现了onLocaitonChanged(Location location)。以下步骤都是在onLocationChanged(Location location)函数中实现
(1)设定目标点(桂林站)( 25.261182,110.282886 )
Double lat1 = 25.261182;
Double lng1 = 110.282886
(2)获取移动设备当前坐标
Double lat2 = location.getLatitude();
Double lng2 = location.getLongitude();
(3)计算获得两者的距离
float[] result = new float[1];
Location.distanceBetween(lat1,lng1,lat2,lng2,result);
主要代码如下:
模拟器发送坐标界面
坐标间距离计算
最新推荐文章于 2022-07-22 11:40:45 发布