高德地图 Android API 的定位原理及使用方法

基站定位是根据通讯网络基站信息进行定位的方法,此定位方法需要有较丰富的基站地理信息数据支持。高德地图目前的基站数据库支持 GSM 网络和CDMA网络。

定位机制

Android 平台主要使用三个 Class 和一个 interface 访问定位功能:

  1. LocationManager 是定位的核心接口,应用程序首先调用 getSystemService,得到此类的实例,然后通过此类向系统申请定位支持。
  2. 定位方法有多种,每一种都封装为一个LocationProvider 的子类,如 GPS 定位,Cell 定位,IP 定位等等。应用程序可以设定一个标准,让系统帮自己选择一个合适的LocationProvider,此标准的定义由类 Criteria 封装。
  3. 接口LocationListener 定义了回调方法,由应用程序实现。当回调条件触发时(比如,当前位置发生了改变),系统会调用此接口中的对应方法。

此三个类加一个接口为 Android 定位的基石,至于接口 GpsStatus.NmeaListener,GpsStatus.Listener,以及类 GpsStatus,GpsSatellite 仅与 GPS 定位相关。

高德地图Android API移动定位直接使用了类Criteria,以及接口LocationListener,使用两个Proxy:LocationManagerProxy 和 LocationProviderProxy分别重载了LocationManager 及 LocationProvider。这两个Proxy包含的方法及常量定义,与对应的标准类基本一致(LocationManager 的构造方法除外)。应用程序通过使用API,可以无缝的在基站定位,WiFi 定位及GPS定位间切换,定位过程如下图所示:

注意使用Cell定位的应用,需要添加权限 READ_PHONE_STATE 和 ACCESS_COARSE_LOCATION。

 

移动定位开发步骤

移动定位API在高德地图Android API 中主要使用LocationManagerProxy 类、 Criteria 类和一个LocationListener 接口来实现定位功能。下面介绍移动定位的具体使用方法ÿ

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Android 高德地图 API 提供了定位功能,可以在地图上显示当前位置,并且可以实时更新位置信息。下面是基本的定位步骤: 1. 在 AndroidManifest.xml 文件中添加定位权限: ``` <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/> ``` 2. 在应用程序中添加 AMapLocationClient 实例: ``` AMapLocationClient mLocationClient = null; mLocationClient = new AMapLocationClient(getApplicationContext()); ``` 3. 设置定位参数: ``` AMapLocationClientOption mLocationOption = null; mLocationOption = new AMapLocationClientOption(); mLocationOption.setLocationMode(AMapLocationClientOption.AMapLocationMode.Hight_Accuracy); mLocationOption.setInterval(2000); mLocationOption.setOnceLocation(true); mLocationClient.setLocationOption(mLocationOption); ``` 4. 开始定位: ``` mLocationClient.startLocation(); ``` 5. 在定位回调函数中处理定位信息: ``` public void onLocationChanged(AMapLocation aMapLocation) { if (aMapLocation != null) { if (aMapLocation.getErrorCode() == 0) { //定位成功 double latitude = aMapLocation.getLatitude();//获取纬度 double longitude = aMapLocation.getLongitude();//获取经度 //在地图上显示当前位置 LatLng location = new LatLng(latitude, longitude); aMap.moveCamera(CameraUpdateFactory.newLatLngZoom(location, 17)); aMap.addMarker(new MarkerOptions().position(location)); } else { //定位失败 Log.e("AmapError", "location Error, ErrCode:" + aMapLocation.getErrorCode() + ", errInfo:" + aMapLocation.getErrorInfo()); } } } ``` 以上就是基本的定位步骤,可以根据需要自定义定位参数和定位回调函数的处理逻辑。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值