您的位置:首页 > 其它

Project第三天 实现百度定位后计算距离和进行排序

2016-07-04 20:58 204 查看

承接第二天 计算距离和排序

前一天实现了百度定位之后,就利用百度地图定位功能对用户和指定的目标位置的距离进行计算。大致思路如下:

第一、首先我们要实现LocationManager中的观察者接口,并且要将当前对象进行添加注册为观察者对象。实现这个接口的目的就是获取用户所在位置的定位信息,这一步是通过复写接口中的抽象方法。在这里,我们复写抽象方法实现的是将定位的位置信息进行存储起来。顺便说一下,在这里实现存储的是SharePreferences这个对象。该对象是一个轻量级的存储工具,对于少数量的数据存储与获取很方便。很显然,可以把该对象封装成一个单例的工具类,随时调用即可。
第二、获取并存储了用户所在位置的信息之后,接下来就是获取目标位置的信息了。通常情况下,我们先得到的是用户的位置信息,这里的位置信息我们也会把它封装成一个对象以便于处理,可以定制为实体类LocatioPosition,该对象中封装这用户本地的经纬度和相关信息,其实这里的信息决定于我们实现观察者中的抽象方法。既然我们已经得到了用户本地的经纬度,结合我们用网络请求工具获得到的目标位置的经纬度,利用百度地图的工具类DistanceUtil就可以对两点之间的距离进行计算了。实现过程如下:用或得到的用户的经纬度作为参量构造一个对象,这个对象就是用户所在位置的Latlng对象,注意,纬度在前经度在后。示例代码为
用户的Latlng对象LatLng userpos=new LatLng(user.latitude,user.longtiude);
其次,通过网络接口获得到的(detination)目标位置的经纬度,同样获得一个LatLng对象,并完成初始化:
Latlng destination=new LatLng(destination.latitude,destination.longtitude);

最后,用百度地图的工具类对象的静态方法DistanceUtil.getDistance(userpos,destination);既可以得到用户和目标位置的之间的距离,该方法的返回值是一个double类型的数。更具情况,我们可以运用对格式化工具类Format对返回的结果进行格式化处理。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: