咋们成-功获取到消息定位的权限以后,需要进一步获取得手机现在的定位信息,并在舆图上能够或者者展现进去拉。而鸿蒙APP的界面中要展现高德舆图确现在定位,能够通过“小蓝点阿”这个图标来举行记号,让手机用户很分明地知道自己在那里拉。
手机定位-小蓝点
如上图,咋们在高德舆图中看到了一位“小蓝点阿”图标拉。引入高德舆图SDK后,咋们的鸿蒙APP要完成手机现在定位的“小蓝点阿”,需要以下4个措施
(1).掀开华为手机中的【位信赖息】开关,激活定位器Locator啦;
(2).开启Locator的定位,通过RequestParam选择手机的精一定位种别,获取LocatorCallback接口中实时发送的定位坐标值啦;
(3).经太高德舆图SDK供应的Amap对-象,在自己的slice类中建立全局变量,获取LocatorCallback接口类的onLocationReport()办法中输入的定位值location啦;
(4).获取到定位坐标数据后,通过LocationSource接口供应的监听器OnLocationChangedListener去触发“小蓝点阿”在高德舆图上展现,咋们还能够连续运用高德舆图供应的MyLocationStyle对-象来更改定位图标的样式风格,最终仍需要绑定到Amap对-象中拉。
为了能够或者者完成此功效,咋们仍然一同来敲下代码去完成她拉。
一. 从体制中获取到消息权限的支持后,咋们一最先的时刻掀开华为手机中的【位信赖息】开关,激活定位器Locator拉。
在激活Locator这个对-象以前,咋们一定获取到响应的职位权限,好比ohos.permission.LOCATION 和
ohos.permission.LOCATION_IN_BACKGROUND拉。
有无这两个权限,咋们的手机定位数据会展现null, Locator这个对-象也无法激活拉。如果你另有无完成“获取职位权限阿”的历程,能够寻找我上一篇的内容鸿蒙开拓版高德舆图SDK-手机定位(一)获取手机的「职位」权限拉。
本职位权限能够或者者举行-消息的选择以后,咋们要激活定位器Locator代码以下
// 定位器 private Locator locator; /** * 激活"位信赖息"的locator开关 */ public void isOpenLocationSwitch() else }
两.通过RequestParam选择装备的精一定位办法,让LocatorCallback接口能够或者者完成定位数据的获取,并通过定位器locator的startLocating()办法开启定位拉。
咋们需要选择装备的定位种别,能够运用RequestParam来选择更准确的定位办法,并通过LocatorCallback接口类去一同完成定位数据的获取,代码以下
//上报装备定位信息 private MylocatorCallBack mylocatorCallBack = new MylocatorCallBack(); /** * 手机定位器开启后,获取定位实时数据 */ public void onLocationChangeListener()
三.通过LocatorCallBack接口类供应的onLocationReport()办法,获取实时的定位数据内容,并同时绑定到高德舆图供应的Amap对-象内里拉。
//舆图掌控器 private AMap aMap; //日志信息 private static final HiLogLabel hilog = new HiLogLabel(HiLog.DEBUG, 0x0000, "APP_LOG"); /** * 上报装备定位信息 * 需要注重MylocatorCallBack是“内里类阿”, * 把封装Amap对-象的getLocation(location)办法 * 放到MylocatorCallBack类供应的onLocationReport(location)办法中, * 即可挪用并获取到装备实时发送的定位数据信息 */ public class MylocatorCallBack implements LocatorCallback @Override public void onStatusChanged(int i) @Override public void onErrorReport(int i) } /** * 获取现在坐标的经纬度值 */ public void getLocation(Location location)
从上面的代码块中,咋们通过日志对-象hilog来获取到onLocationReport(Location location)办法中对参数Location实时输入的装备定位值,以下图
通过Hilog来打印装备现在的职位数据
获取到onLocationReport(Location location)办法中的定位数据后,咋们要把这些实时定位数据都绑定到高德舆图SDK供应的对-象Amap中,让Amap来完成高德舆图确现在定位,在上面我是通过自己界说的getLocation(Location location)办法来完成拉。
四.通过完成LocationSource接口,建立监听器OnLocationChangedListener这个对-象,让监听器去触发现在职位-“小蓝点阿”的图标在舆图上的展现,完成手机现在定位功效拉。
/** * MainAbilitySlice要完成LocationSource接口,获取OnLocationChangedListener监听器 */ public class MainAbilitySlice extends AbilitySlice implements LocationSource /** * 绘制订位点 */ private void getMyLocationStyle() /** * 激活定位器 * @param onLocationChangedListener * LocationSource接口完成办法 */ @Override public void activate(OnLocationChangedListener onLocationChangedListener) /** * 封锁定位器 * LocationSource接口完成办法 */ @Override public void deactivate() }
在上面的代码中,咋们自己的silice类需要通过LocationSource类来获取监听器OnLocationChangedListener,让监听器OnLocationChangedListener的onLocationChanged(location)办法去触发装备现在定位的图标-小蓝点在舆图上能够或者者展现,结局图以下
舆图展现“小蓝点阿”
如果你感受这个小蓝点不-是自己喜欢的样式风格,咋们能够通过上面代码块中供应的MyLocationStyle这个对-象来连续更改定位图标的样式风格,结局图以下
运用MyLocationStyle这个对-象,去更改小蓝点图标的样式
固然,MyLocationStyle这个对-象也必须绑定到高德舆图供应的Amap对-象内里,唯一Amap对-象才气让小蓝点在高德舆图中举行展现拉。
结语
要让鸿蒙版开拓环-境中的APP事情事件完成高德舆图确现在定位-带箭头的“小蓝点阿”,需要先获取得手机现在定位的数据信息,然后再经太高德舆图供应的Amap对-象来绑定现在定位的数据信息,让高德舆图能够或者者展现咋们地址的四周信息拉。
而定位图标“小蓝点阿”要在高德舆图上举行展现,必须要有监听器OnLocationChangedListener来举行触发,触发的结局仍需要绑定Amap对-象,这样才气让“小蓝点阿”着实记号咋们确现在职位拉。
注重以上关于鸿蒙版高德舆图的定位“小蓝点阿”的完成,自己并有无举行相关定位“坐标偏移量阿”的处置,和现实上的定位功效仍有差异,需要你们自己去进一步举行功效优化拉。如果你对本篇内容需要举行一五一十领会,可在谈论区举行留言拉。
高德定位有无百度定位精准,百度差几米,高德差几十米
发表评论