周陆洲 徐其岗 韩肖杰
【摘要】文中结合传统的GPS定位方法和Android平台提供的基于位置服务的地图服务API开发包,分析了Android平台移动终端实时定位的原理和方法,详细阐述了Android平台的GPS系统的具体实现技术,讨论了利用地图接口和反地址解析来实现地图的控制和详细位置的显示。最后通过实际的智能终端移动定位应用开发验证了方法的可行性。
【关键词】 GPS 地图接口 反地址解析 移动终端 实时定位
1 引言
随着 GPS 技术的发展,基于 PC 机的导航定位系统由于其功耗高、携带不方便等已不能满足社会发展的需要。文中介绍了一种基于 Android 平台的移动终端定位系统,在系统中 Android 移动终端利用周围的无线网络资源与 Internet 连接可将 Google 的地图资源显示在移动终端上,实现地图的缩放、浏览、卫星图/地图模 式切换及实时定位用户当前位置。
2 设计原理
现在很多移动终端都内置了GPS 接收机模块,借助于日益完善的移动定位技术,移动终端的GPS定位 越来越实时、精准。而 Google 推出的 Android 平台提供了两个基于位置服務的地图 API 开发包。通过对这两个开发包内与位置服务相关的类的使用,配合移动终端设备本身具备的定位定向等相关模块,可以很好地实现 GPS 应用程序开发。
Android 的定位接口可以用来获取移动终端设备的地理位置。应用程序可以定时请求更新移动终端设备的当前地理定位信息。也可以借助一个 Intent 接收器来实现以经纬度和半径划定的一个区域,当设备出入该区域时,可以发出提醒信息。
主要包含下面几个与位置服务相关的类: ( 1) LocationManager: 该类用来获取当前位置,追踪设备的移动路线,或设定敏感区域,在进入或离开敏 感区域时设备会发出特定警报。 ( 2) LocationProvider: 该类是能够提供定位功能的组件集合,集合中的每种组件以不同的技术提供设备的当前位置,区别在于定位的精度、速度和成本。 ( 3) LocationListener: 该类用于接收当位置信息发生改变时从 LocationManager 接收通知。必须事先在定 位管理器中注册监听器对象。 ( 4) Criteria: 该类用于描述 Location Provider 标准, 包括位置精度水平、电量消耗水平、是否获取海拔或方位信息、是否允许接收付费服务。 Android 的地图接口( com. google. Android. maps) 可以借助 Google Maps 及定位 API,就能在地图上显示用户当前的地理位置。主要包含下面几个核心类: MapActivity: 该类是一个抽象类,用于显示 Google。
MAP的 Activity 类,它需要连接底层网络MapView: 该类派生自 android. view. ViewGroup,用 于显示地图的 View 组件。由于 MapView 需要通过后台的线程来连接网络,而这些线程要由 MapActivity 来管理,所以它必须和 MapActivity 配合使用。 MapController: 该类用于在控制地图的移动、缩放。 Overlay: 该类用于在地图上的绘制可显示的对象。 GeoPoint: 它是一个包含经纬度位置的对象。 另外 Google Maps 服务要求开发者获取一个使用 MapView 的 API Key,以便在使用应用程序时能加载 Google 地图数据。 根据上面介绍的 Android 平台包含的 API 开发包,为了实现移动终端 GPS 定位功能现可分以下几个步:
( 1) 向 Google 申请一组经过验证的“地图密钥” ( Map API Key) ,申请成功后修改布局文件中 android: apiKey 键值。 ( 2) 通过使用 Google Maps API 中的 MapView、 MapController 分别进行地图的显示、控制。 ( 3) 使用定位 API 来获取移动终端的当前定位信息及在 Google Map 上标注该终端的当前位置。 ( 4) 调用 Google Maps API 进行地址解析,根据经 纬度获得具体位置详细信息。
3 具体实现
3.1 申请申请 Maps API key 要使用 Google Map 服务的话,我们需要一个 API key。
3.2 GPS 定位及实时更新功能实现为了能在 Google Map 上显示用户当前的位置,就要通过 Android 的定位管理 LocationManager 来获取当 前设备的地理位置为了让用户能实时看到自己位置的变化,让它实 现一个 LocationListener 接口,使其能够监听定位信息的改变。
3.3 地图的显示与控制 地图的显示与控制主要采用 Android 提供的 Map- View 和 MapActivity 这两个类来实现。MapView 用来 显示地图,它可以通过获取其他事件来支持移动终端上地图的移动和缩放功能,也支持可以通过添加 Map Overlay 类在地图上标注用户当前位置。
3.4 根据经纬度进行反地址解析 在实际位置信息显示开发过程中,地图相关的操作普遍采用地理编码与地理反编码,Android 也提供了 Geocoder 类的 getFromLocation 方法进行地理反编码来 返回指定经纬度的详细地址( List 对象) 。笔者使用过程中不管是在模拟器还是在移动终端环境下,返回的 List 对象都为 null。经过分析发现 Google Geocoding API 的使用有每天 2500 个地理位置查询请求的限制。
参考文献:
[1]冉崇善,赵 萍. 基于 ITIL 的企业 IT 资源服务系统设计 武汉理工大学学报 2006
[2]陈 锐,魏津瑜. 基于 ITIL 的 IT 服务管理模型研究 2008
[3]周 霞. 探索 IT 服务管理( ITSM) 在胜利油田的应用 计算机技术与发展 2011