第10章 GPS位置服务与地图编程 QQ号: QQ群: (Android编程入门) 网络资源:

Slides:



Advertisements
Similar presentations
NAT与ICMP交互.
Advertisements

第一篇 生命科学 第2课时 细胞.
位置與地圖應用 此投影片為講解Android如何取得定位經緯度和使用Google Map地圖.
基于解释性语言的手机跨平台架构 Sloan Yi. Qt MTK.
在PHP和MYSQL中实现完美的中文显示
第九章 字符串.
Android快速开发入门 巫文杰、Android工程师 讲师的CSDN博客地址
實驗十三:顯示目前經緯度位置.
第11章 Android GPS位置服务与地图编程
第9章 位置服务与地图应用.
6.4 Notification 通知栏.
管理信息结构SMI.
走进编程 程序的顺序结构(二).
辅导课程六.
网络常用常用命令 课件制作人:谢希仁.
第8章 Service解析.
2019/1/12 GDP设计协同 超级管理员操作手册 GDP项目组.
Android 视频教程简介.
逆向工程-汇编语言
CPU结构和功能.
Windows 7 的系统设置.
YMSM D-PACK 安装手册 作成者:D-PACK维护组(YMSLx) 作成日:
用event class 从input的root文件中,由DmpDataBuffer::ReadObject读取数据的问题
DevDays ’99 The aim of this mission is knowledge..
第10章 GPS位置服务与地图编程.
工业机器人技术基础及应用 主讲人:顾老师
宁波市高校慕课联盟课程 与 进行交互 Linux 系统管理.
宁波市高校慕课联盟课程 与 进行交互 Linux 系统管理.
SOA – Experiment 2: Query Classification Web Service
C++语言程序设计 C++语言程序设计 第七章 类与对象 第十一组 C++语言程序设计.
$9 泛型基础.
本节内容 随机读取 视频提供:昆山爱达人信息技术有限公司.
第四章 团队音乐会序幕: 团队协作平台的快速创建
Location Based Services - LBS
实验四、TinyOS执行机制实验 一、实验目的 1、了解tinyos执行机制,实现程序异步处理的方法。
产品介绍 日修改版本: 去除:C+W统一认证功能:(是否支持) 小米3 外观设计 上市时间: 2014 年 2 月
VB与Access数据库的连接.
工业机器人知识要点解析 (ABB机器人) 主讲人:王老师
编译OpenSSL 本节内容 视频提供:昆山爱达人信息技术有限公司 视频录制:yang 官网地址:
华为— S7-201c 外观设计 S7-201c 建议零售价格:2588元 上市时间:2011年 10月 20 日
《手把手教你学STM32-STemWin》 主讲人 :正点原子团队 硬件平台:正点原子STM32开发板 版权所有:广州市星翼电子科技有限公司
_13简单的GDI绘图操作 本节课讲师——void* 视频提供:昆山爱达人信息技术有限公司 官网地址:
本节内容 文件系统 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
Chapter 18 使用GRASP的对象设计示例.
多层循环 Private Sub Command1_Click() Dim i As Integer, j As Integer
Visual Basic程序设计 第13章 访问数据库
GIS基本功能 数据存储 与管理 数据采集 数据处理 与编辑 空间查询 空间查询 GIS能做什么? 与分析 叠加分析 缓冲区分析 网络分析
Python 环境搭建 基于Anaconda和VSCode.
本节内容 指针类型的使用 视频提供:昆山爱达人信息技术有限公司.
《手把手教你学STM32-STemWin》 主讲人 :正点原子团队 硬件平台:正点原子STM32开发板 版权所有:广州市星翼电子科技有限公司
基于列存储的RDF数据管理 朱敏
C++语言程序设计 C++语言程序设计 第一章 C++语言概述 第十一组 C++语言程序设计.
南京城际在线信息技术有限公司—Itssp-Ie
C++语言程序设计 C++语言程序设计 第九章 类的特殊成员 第十一组 C++语言程序设计.
关于使用问题的解决方法 中山医学院大数据信息系统.
第8章 创建与使用图块 将一个或多个单一的实体对象整合为一个对象,这个对象就是图块。图块中的各实体可以具有各自的图层、线性、颜色等特征。在应用时,图块作为一个独立的、完整的对象进行操作,可以根据需要按一定比例和角度将图块插入到需要的位置。 2019/6/30.
第12章 综合案例----校园通 QQ号: QQ群: (Android编程入门) 网络资源:
WEB程序设计技术 数据库操作.
本节内容 进程 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
使用ADO访问数据库 李宝智 BonizLee 课程 10564A
FVX1100介绍 法视特(上海)图像科技有限公司 施 俊.
创建、启动和关闭Activity 本讲大纲: 1、创建Activity 2、配置Activity 3、启动和关闭Activity

使用Fragment 本讲大纲: 1、创建Fragment 2、在Activity中添加Fragment
第六讲 酒店客房管理系统(二) 教育部“十二五”职业教育国家规划教材
网页版报名流程 Step 4 点击“详情”查阅具体岗位信息,输入身份数据及申请序列码进行最终报名
《手把手教你学STM32-STemWin》 主讲人 :正点原子团队 硬件平台:正点原子STM32开发板 版权所有:广州市星翼电子科技有限公司
多个Activity的使用 本讲大纲: 1、使用Bundle在Activity之间交换数据 2、调用另一个Activity并返回结果
学习目标 1、什么是列类型 2、列类型之数值类型.
百万行、千万行数据查询教程 老黄牛.
Presentation transcript:

第10章 GPS位置服务与地图编程 QQ号:1281147324 QQ群:490420731(Android编程入门) 网络资源: http://www.xs360.cn/book

主要内容

10.1 GPS位置服务编程 位置服务(Location-Based Services,LBS),又称定位服务或基于位置的服务,融合了GPS定位、移动通信、导航等多种技术,提供了与空间位置相关的综合应用服务。

10.1.1 支持位置服务的核心API Android为支持位置服务,提供了android.location包,该包中包含了与位置信息密切相关的类和接口,主要有:LocationManager、LocationProvider、Location、LocationListener。 LocationManager(定位管理者)类是访问android系统位置服务的入口,所有定位相关的服务、对象都将由该类的对象来产生。和其他服务一样,程序不能直接创建LocationManager对象,而是通过Context的getSystemService()方法来获取。 LocationManager locMg=getSystemService(Context.LOCATION_SERVICE) ;

10.1.1支持位置服务的核心API 一旦得到了LocationManager对象,即可调用LocationManager类的方法获取定位相关的服务和对象,例如获取最佳定位提供者、实现临近警报功能等,该类的常用方法如下: public String getBestProvider (Criteria criteria, boolean enabledOnly):根据指定条件返回最优的LocationProvider;criteria表示过滤条件,enabledOnly表示是否要求处于启用状态; public Location getLastKnownLocation (String provider):根据LocationProvider获取最近一次已知的Location,provider表示提供上次位置的LocationProvider名称; public LocationProvider getProvider (String name):根据名称返回LocationProvider; public List<String> getProviders (boolean enabledOnly):获取所有可用的LocationProvider; public void requestLocationUpdates (String provider, long minTime, float minDistance, PendingIntent intent):通过指定的LocationProvider周期性地获取定位信息,并通过intent启动相应的组件,进行事件处理,provider表示LocationProvider的名称,mimTime表示每次更新的时间间隔,单位为毫秒,minDistance表示更新的最近位置,单位为米,intent每次更新时启动的组件;

10.1.1支持位置服务的核心API LocationProvider(定位提供者)类是对定位组件的抽象表示,用来提供定位信息,能够周期性的报告设备的地理位置,Android中支持多种LocationProvider,它们以不同的技术提供设备的当前位置,区别在于定位的精度、速度和成本等方面。常用的LocationProvider主要有以下两种。 network:由LocationManager.NETWORK_PROVIDER常量表示,代表通过网络获取定位信息的Location Provider对象; gps:由LocationManager.GPS_PROVIDER常量表示,代表通过GPS获取定位信息的LocationProvider对象。 GPS相对来说精度更高,但它只能在户外工作,很费电,并且不能像用户期望的那样立即就能返回位置信息,而网络位置提供器使用手机发射塔或Wi-Fi信号来判断用户位置,在室内室外都能工作、响应速度快,并且更加省电。

10.1.1支持位置服务的核心API LocationProvider类的常用方法如下: int getAccuracy():返回该LocationProvider的精度; String getName():返回该LocationProvider的名称; boolean hasMonetaryCost():返回该LocationProvider是收费的还是免费的; boolean supportsAltitude():判断该LocationProvider是否支持高度信息; boolean supportsBearing():判断该LocationProvider是否支持方向信息; boolean supportsSpeed():判断该LocationProvider是否支持速度信息; Location类 就是代表位置信息的抽象类,通过Location可获取定位信息的精度、高度、方向、纬度、经度、速度以及该位置的LocationProvider等信息。

10.1.1支持位置服务的核心API LocationListener接口 用于监听定位信息的监听器,必须在定位管理器中注册该对象,这样在位置发生变化的时候就会触发相应的方法进行事件处理,该监听器包含的方法如下: public abstract void onLocationChanged (Location location):位置发生改变时回调该方法; public abstract void onProviderDisabled (String provider):Provider禁用时回调该方法; public abstract void onProviderEnabled (String provider):Provider启用时回调该方法; public abstract void onStatusChanged (String provider, int status, Bundle extras):当Provider状态发生变化时回调该方法;

10.1.2 简单位置服务应用 获取位置信息的通用步骤为: 案例:获取位置信息 【示例代码:codes\ch10\LocationTest】 ①获取系统的LocationManager对象; ②使用Locationmanager,通过指定LocationProvider来获取定位信息,定位信息由Location来对象来表示; ③从Location对象中获取定位信息; 案例:获取位置信息 【示例代码:codes\ch10\LocationTest】

10.2 百度地图编程 Android提供的位置服务API可获取设备的定位信息,但得到的只是一些难记的经纬度数值,对用户来说用处不大。如果能将这些经纬度与生活联系起来,以更形象直观的方式显示将会吸引更多的用户,最典型的就是地图应用。 百度地图 Android SDK是一套基于Android 2.1及以上版本设备的应用程序接口。 通过该套 SDK可以开发适用于Android系统移动设备的地图应用,可以轻松访问百度地图服务和数据,构建功能丰富、交互性强的地图类应用程序。

百度地图常见功能 地图:提供地图展示和地图操作功能,其中地图展示包括普通地图(2D,3D)、卫星图和实时交通图; POI检索:支持周边检索、区域检索和城市内检索。 地理编码:提供地理坐标和地址之间相互转换的能力。 线路规划:支持公交信息查询、公交换乘查询、驾车线路规划和步行路径检索。 地图覆盖物:百度地图SDK支持多种地图覆盖物,展示更丰富的地图。 定位:采用GPS、WIFI、基站、IP混合定位模式,可使用Android定位SDK获取定位信息,使用地图SDK定位图层进行位置展示。

10.2.1使用百度地图的准备工作 百度地图作为第三方应用,Android中并不能直接使用,需要导入百度地图提供给我们的SDK,具体准备工作如下: 1.申请百度地图API Key。

10.2.1使用Google地图的准备工作 2.下载百度地图SDK,单击相关下载,选择一键下载即可。

10.2.2在地图上标记位置 MapView:显示地图的控件,主要负责获取地图数据并显示,能够捕捉屏幕触控、手势等操作,根据用户操作实时更新地图数据的显示。在使用该控件之前要确保已调用SDKInitializer.initialize(Context)方法执行初始化操作,通过该控件可获取具体的地图对象。 BaiduMap:具体的百度地图对象,该类封装了地图对象的操作方法和接口,例如可为其添加各种事件监听器、设置地图显示的类型(普通图、卫星图)、改变地图状态(如缩放级别)、添加图层(如添加标记)等。

10.2.2在地图上标记位置 MapStatusUpdate:描述地图状态将要发生的变化,例如缩放级别的变化等; LatLng:地图上位置信息的封装,包括经度、纬度信息; Marker:标记,用于突出地图上某个位置或建筑物信息; MarkerOptions:用于设置标记的一些属性信息,例如标记的图标、标记的位置坐标、标记的标题、标记是否可拖动等;

10.2.2在地图上标记位置 应用中显示百度地图的开发步骤 (1)根据向导创建一个Android项目,导入百度地图SDK; (2)在AndroidManifest.xml文件中添加开发密钥、所需权限等信息; (3)在布局xml文件中添加地图控件; (4)在应用程序创建时初始化 SDK引用的Context 全局变量,初始化操作应放在加载布局文件之前; (5)管理MapView的生命周期,让其随着Activity的变化而变化。

10.2.2 根据位置信息在地图上定位 百度地图上显示位置标记 (1)为单选按钮添加切换模式事件处理,判断选中的是哪个模式,然后设置显示模式; (2)为定位按钮添加事件处理,首先获取用户输入的经纬度值,然后将其封装成LatLng对象,再根据坐标信息在地图上添加一个标记。