Project第二天 观察者模式处理定位信息

第二天任务 集成百度地图实现基本定位功能,并得到定位信息,要点如下:

1、去百度官方下载百度地图SDK,实现注册获取秘钥,(不发布app版本的前提下)基本方法可以参考第一行代码,主要是拿到自己本地的keystore文件,在电脑执行脚本命令:keytools -list -v -keystore <keystore文件路劲> ,获取到android的sdk指纹后,将百度地图集成到工程中,添加必要的权限,对获取的指纹添加包名,就可以激活并使用百度地图api了。但是对于android studio的开发环境,在系统配置文件中要添加特殊的服务和在gradle文件中android编译环境中必添加:
sourceSets{ 
main {
    jniLibs.srcDir 'libs'
}

2、初步认识定位location功能:
  百度地图定位功能是由三个对象共同来完成的 LocationClient、GeoCoder和LocationClientOption,把它们解释成为定位服务端与地理解码(也就是获取地址)和定位服务的设置工具,可见这个过程是先定位,然后获取地址这两个步骤完成的。这三个对象的初始化过程:
LocationClient mLocationClient =new LocationClient(context);
GeoCoder mGeoCoder=GeoCoder.newInstance();
LocationCilentOption mLocationClientOption=new LocationClientOption();

之后,三个对象分别干活,具体如下:
LocationClient对象注册定位监听器 
mLocationCilent.registerLocationListener(BDLocationListener    mBDLocationListener ); 这里的BDLocationLitener是一个接口,里面封装着定位客服端定位的反馈信息的回调方法。
GeoCoder对象设置地理位置返回值监听器
mGeoCoder.setOnGetGeoCodeResultListener(OnGetGeoCoderResultListener   mOnGetGeoCoderResultListener);
这里的OnGetGeoCoderResultListener也是一个接口,里面封装这反馈地理位置信息的回调方法。
LocationCilentOption设置定位的方式,
比如打开GPS,定义坐标系类型和隔多长时间定位一次等;最后分别调用LocationClient的 setLocOption(option)start( )方法启动,定位功能就完成了!接下来我们要处理定位反馈的信息了。
3、用观察者模式实现获取定位的信息。
  很显然,BDLocationListener和OnGetGeoCoderResultListener两个接口中的回调方法是需要客户端来实现的,而客户端就是要把反馈信息及时的进行解析出来,为了实现这个业务逻辑,就必须要对这两个对象进行随时监听观察,在它们的回调方法中加上“观察”,让观察者来实现处理返回信息的任务。
下面是示例代码:




如上所述,我们对BDLocationListener和OnGetGeoCoderResultListener两个接口中的回调方法加上了“观察”,把定位的信息及时反馈给观察者处理,实现了对以上两个对象的Observe。再者,我们把它们封装在一个LocationManager对象中,并对其单例化后,对观察者进行了有效的管理。如要再次的调用定位功能,只需要一下两行代码就可以实现。

movieListener是观察者接口观察者接口interface MovieLocationListener的实现对象。由此可见,只要是实现了观察者接口的对象,就能够对BDLocationListener和OnGetGeoCoderResultListener两个进行观察监视。那么作为观察者的客户端,可以在观察者接口的回调方法中自由的发挥对返回的信息进行处理。

这是项目第二天的内容,运用观察者模式对百度地图的两个监听器对象进行观察监视,自定义观察者接口,处理返回的信息。



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值