第9章位置服务与地图应用
第9章 位置服务与地图应用
本章学习目标: ■了解位置服务的概念 ·了解地图密钥的申请方法 ■掌握获取位置信息的方法 ■掌握MapView和MapControlleri的使用方法 ■掌握Google地图覆盖层的使用方法
本章学习目标: n 了解位置服务的概念 n 了解地图密钥的申请方法 n 掌握获取位置信息的方法 n 掌握MapView和MapController的使用方法 n 掌握Google地图覆盖层的使用方法
9.1位置服务 ▣位置服务 口通过电信移动运营商的无线电通讯网络或外部定位方式, 获取移动终端用户的位置信息,在GS平台的支持下, 可以为用户提供很多便捷服务(LBS) 口定位方式 ■GPS、基站、Wi-Fi、签到 口API自动处理对地图服务的获取,数据下载,地图显示, 还有地图上的触摸手势等。还可以利用API的函数增加 一些标记、多边形和覆盖,还可以改变用户对于一个特 定地图的视角
9.1 位置服务 n 位置服务 q 通过电信移动运营商的无线电通讯网络或外部定位方式, 获取移动终端用户的位置信息,在GIS平台的支持下, 可以为用户提供很多便捷服务(LBS) q 定位方式 n GPS、基站、Wi-Fi、签到 q API自动处理对地图服务的获取,数据下载,地图显示, 还有地图上的触摸手势等。还可以利用API的函数增加 一些标记、多边形和覆盖,还可以改变用户对于一个特 定地图的视角
9.1位置服务 ■位置服务 口定位原理 ■使用百度Android定位SDK必须注册GPS和网络使用权限。当应 用程序向定位SDK发起定位请求时,定位SDK会根据应用的定 位因素(GPS、基站、Wi-Fi信号)的实际情况(如是否开启 GPS、是否连接网络、是否有信号等)来生成相应定位依据进 行定位。 ■用户可以设置满足自身需求的定位依据: 若用户设置GPS优先,则优先使用GPS进行定位,如果GPS定 位未打开或者没有可用位置信息,且网络连接正常,定位SDK 则会返回网络定位(即Wi-Fi与基站)的最优结果。为了使获得 的网络定位结果更加精确,请打开手机的Wi-F开关
9.1 位置服务 n 位置服务 q 定位原理 n 使用百度Android定位SDK必须注册GPS和网络使用权限。当应 用程序向定位SDK发起定位请求时,定位SDK会根据应用的定 位因素(GPS、基站、Wi-Fi信号)的实际情况(如是否开启 GPS、是否连接网络、是否有信号等)来生成相应定位依据进 行定位。 n 用户可以设置满足自身需求的定位依据: 若用户设置GPS优先,则优先使用GPS进行定位,如果GPS定 位未打开或者没有可用位置信息,且网络连接正常,定位SDK 则会返回网络定位(即Wi-Fi与基站)的最优结果。为了使获得 的网络定位结果更加精确,请打开手机的Wi-Fi开关
9.1位置服务 ·位置服务 口定位原理 LBS应用程序 .GPS:30米左右 ·基站覆盖率超过 .Wi-Fi:30~200米 95% ·基站:100~300米 ·Wi-Fi覆盖率超过 90% 定位结果定位请求 精度高 覆盖广 定位SDK 流量小 速度快 网络定位请求流量 网络定位时间小于1 约0.3K/次 定位服务器
9.1 位置服务 n 位置服务 q 定位原理
9.1位置服务 ·位置服务 口Android平台支持提供位置服务的API,在开发过程中主 要用到LocationManager和LocationProviders对象 口LocationManager可以用来获取当前的位置,追踪设备的 移动路线,或设定敏感区域,在进入或离开敏感区域时 设备会发出特定警报 口LocationProviders则是提供定位功能的组件集合,集合 中的每种组件以不同的技术提供设备的当前位置,区别 在于定位的精度、速度和成本等方面
9.1 位置服务 n 位置服务 q Android平台支持提供位置服务的API,在开发过程中主 要用到LocationManager和LocationProviders对象 q LocationManager可以用来获取当前的位置,追踪设备的 移动路线,或设定敏感区域,在进入或离开敏感区域时 设备会发出特定警报 q LocationProviders则是提供定位功能的组件集合,集合 中的每种组件以不同的技术提供设备的当前位置,区别 在于定位的精度、㏿度和成本等方面
9.1位置服务 ·位置服务 口为了使开发的程序能够提供位置服务,首先的问题是如 何获取LocationManager 口获取LocationManager可以通过调用 android.app.Activity.getSystemService(O函数获取,代码 如下 1 String serviceString=Context.LOCATION_SERVICE; 2 LocationManager LocationManager=(LocationManager)getSystemService(serviceString); ■代码第1行的Context..LOCATION SERVICE指明获取的是 位置服务 代码第2行的getSystemService()函数,可以根据服务名称 获取Android提供的系统级服务
9.1 位置服务 n 位置服务 q 为了使开发的程序能够提供位置服务,首先的问题是如 何获取LocationManager q 获取LocationManager可以通过调用 android.app.Activity.getSystemService()函数获取,代码 如下 1 String serviceString = Context.LOCATION_SERVICE; 2 LocationManager LocationManager = (LocationManager)getSystemService(serviceString); n 代码第1行的Context.LOCATION_SERVICE指明获取的是 位置服务 n 代码第2行的getSystemService()函数,可以根据服务名称 获取Android提供的系统级服务
9.1位置服务 ·位置服务 口Android支持的系统级服务表 Context类的静态常量 值 返回对象 说明 LOCATION SERVICE location LocationManager 控制位置等设备的更新 WINDOW SERVICE window WindowManager 最顶层的窗口管理器 LAYOUT INFLATER SERV layout inflater LayoutInflater 将ML资源实例化为 ICE View NOTIFICATION SERVICE notification NotificationManager 后台事件通知 POWER SERVICE power PowerManager 电源管理 ALARM SERVICE alarm AlarmManager 在指定时间接受Intent KEYGUARD SERVICE keyguard KeyguardManager 锁定或解锁键盘 SEARCH SERVICE search SearchManager 访问系统的搜索服务 VIBRATOR SERVICE vibrator Vibrator 访问支持振动的硬件 CONNECTIVITY SERVICE connection ConnectivityManager 网络连接管理 WIFI SERVICE wifi WifiManager Wi-Fi连接管理 INPUT METHOD SERVICE input method InputMethodManager 输入法管理
9.1 位置服务 n 位置服务 q Android支持的系统级服务表 Context类的静态常量 值 返回对象 说明 LOCATION_SERVICE location LocationManager 控制位置等设备的更新 WINDOW_SERVICE window WindowManager 最顶层的窗口管理器 LAYOUT_INFLATER_SERV ICE layout_inflater LayoutInflater 将 XML 资源实例化为 View NOTIFICATION_SERVICE notification NotificationManager 后台事件通知 POWER_SERVICE power PowerManager 电源管理 ALARM_SERVICE alarm AlarmManager 在指定时间接受Intent KEYGUARD_SERVICE keyguard KeyguardManager 锁定或解锁键盘 SEARCH_SERVICE search SearchManager 访问系统的搜索服务 VIBRATOR_SERVICE vibrator Vibrator 访问支持振动的硬件 CONNECTIVITY_SERVICE connection ConnectivityManager 网络连接管理 WIFI_SERVICE wifi WifiManager Wi-Fi连接管理 INPUT_METHOD_SERVICE input_method InputMethodManager 输入法管理
9.1位置服务 ▣位置服务 口在指定LocationManager的定位方法后,则可以调用 getLastKnownLocation()方法获取当前的位置信息。以使 用GPS定位为例,获取位置信息的代码如下 1 String provider LocationManager.GPS PROVIDER; 2 Location location=locationManager.getLastKnownLocation(provider); 代码第2行返回的Location对象中,包含了可以确定位置 的信息,如经度、纬度和速度等 口通过调用Location中的getLatitude(O和getLongitude()方 法可以分别获取位置信息中的纬度和经度,示例代码如 下 1 double lat location.getLatitude(); 2 double Ing location.getLongitude();
9.1 位置服务 n 位置服务 q 在指定LocationManager的定位方法后,则可以调用 getLastKnownLocation()方法获取当前的位置信息。以使 用GPS定位为例,获取位置信息的代码如下 1 String provider = LocationManager.GPS_PROVIDER; 2 Location location = locationManager.getLastKnownLocation(provider); n 代码第2行返回的Location对象中,包含了可以确定位置 的信息,如经度、纬度和速度等 q 通过调用Location中的getLatitude()和getLongitude()方 法可以分别获取位置信息中的纬度和经度,示例代码如 下 1 double lat = location.getLatitude(); 2 double lng = location.getLongitude();
9.1位置服务 ·位置服务 口Location类的常用方法 No. 方法 描述 1 getAccuracy() 精确度 2 getBearing() 方位 3 getExtras() 所有附加的信息 4 getProvider() 数据提供者 5 getSpeed() 速度 6 getTime() 时间
9.1 位置服务 n 位置服务 q Location类的常用方法 No. 方法 描述 1 getAccuracy() 精确度 2 getBearing() 方位 3 getExtras() 所有附加的信息 4 getProvider() 数据提供者 5 getSpeed() ㏿度 6 getTime() 时间