第10章 GPS位置服务与地图编程.

Slides:



Advertisements
Similar presentations
第 3 章 测绘项目和测绘市场管理制度 3.1 测绘项目管理制度 测绘项目技术管理主要从技术立法、技术基础设施 建立、技术业务及质量保障、技术创新及新技术、先进 设备使用、推广等几方面加以规范和管理。对此,测绘 法律法规对建立测绘基准和测绘系统、制定测绘技术规 范和标准、坐标系统选择、测绘质量监督管理等内容作.
Advertisements

Android ADT + Android SDK Eclipse Eclipse 編輯器 JAVA JAVA 開發工具.
JAVA 编 程 技 术 主编 贾振华 2010年1月.
廿一世紀的輪廓 朝陽科技大學 嚴國慶.
Android开发入门 -----第一个Android程序 主讲:李晓蕾
跟著媽祖遶境去-白沙屯媽祖文化 國立聯合大學&育達商業科技大學助理教授/古鎮清
框架结构下重点考点解析 必修二中国经济史 南师附中 张倩.
企业实地核查办法解析 机械产品审查部 李燕霞
2014年上半年全市 女职工工作总结 2014年8月 扬州市总工会女职工委员会.
第一章 考点精讲 第1课时 湖南师大附中 高二地理备课组.
一年级家长学校第一课 与孩子共同成长.
工程测量技术专业教学资源库项目 建设方案汇报 汇报人:陈建民 项目主持单位:北京工业职业技术学院 昆明冶金高等专科学校 重庆工程职业技术学院
人教版义务教育课程标准实验教科书 《地 理》 (七年级上册) 简 介
? 新中国这时进入 社会主义社会了吗? 开国大典.
主办单位:西城区归国华侨联合会 西城区金融服务办公室
The secret of yao yi yao Author Sui Yuxuan from guangxinxi
實驗五:多媒體播放器選單介面.
服务热线 : 腾格里沙漠•沙坡头行程 服务热线 :
第一篇 生命科学 第2课时 细胞.
位置與地圖應用 此投影片為講解Android如何取得定位經緯度和使用Google Map地圖.
氣候變遷對南台灣降雨造成之影響 研究背景 結果與討論 研究方法 結論 朱振豪1 、彭康豪1 、莊煌甲1 、邱俊彥2,* 研究目的
广东地区海关 区域通关一体化改革 对外宣讲会
科學科 污染 空氣 成因 的 : 題目 及 減少空氣污染的方法 陳玉玲 (4) 姓名 : 去到目錄.
Activity之间的数据传递.
期末專題報告 MyPosition - 我在何處報你知 組員:曾哲浩 蔡承翰 指導老師:陳朝鈞.
Android App 系統開發教學 Luna 陳雯琳 2014/12/18
使用Android Studio 開發Android App 靜宜大學資管系 楊子青
厦门大学数据库实验室 报告人:谢荣东 导师:林子雨 2014年8月30日
實驗四:單位轉換程式.
第2章 建立Android應用程式 2-1 Java語言、XML文件與Android 2-2 建立第一個Android應用程式
Android + JUnit 單元測試 建國科技大學資管系 饒瑞佶 2012/8/19V4.
實驗十三:顯示目前經緯度位置.
第11章 Android GPS位置服务与地图编程
第9章 位置服务与地图应用.
第一个Android程序 本讲大纲: 1、创建Android应用程序 2、Android项目结构说明 3、运行Android应用程序
第8章 Android内容提供者(ContentProvider)应用
Ch5 Android應用程式的主要組成.
Chapter 7 Android應用元件 Android應用元件可以幫助我們獲得系統資源訊息(ActivityManager)、提供系統服務(Service)、搜尋系統服務(SearchManager)、監聽Intent訊息(Broadcast Receiver)以及資料共享(ContentProvider和ContentResolver)。
ContentProvider與資料共享
第9章 使用意圖啟動活動與內建應用程式 9-1 意圖的基礎 9-2 使用意圖啟動活動
开发Eclipse插件的基本步骤 插件通过添加到预定义的扩展点来向平台添加功能。要将程序代码变成插件,需要: 决定插件如何与平台集成
ANDROID PROGRAMMING2.
Android + Service 建國科技大學 資管系 饒瑞佶.
實驗十四:顯示與控制地圖.
建立Android新專案 Android智慧型手機程式設計 程式設計與應用班 建國科技大學 資管系 饒瑞佶 2012/4 V1
第8章 Service解析.
Android 视频教程简介.
Ch02-基礎語法.
C++语言程序设计 C++语言程序设计 第七章 类与对象 第十一组 C++语言程序设计.
實驗十一:待辦事項程式 (儲存在手機上).
主编:钟元生 赵圣鲁.
第10章 GPS位置服务与地图编程 QQ号: QQ群: (Android编程入门) 网络资源:
網路應用.
Java變數 2014/6/24.
Location Based Services - LBS
電子系學生核心能力(四技航電組) 本系畢業生應具備的核心能力如下: 1.具有整合與組織電子理論和專業知識來分析、表達問 題之能力。
第二章 类型、对象、运算符和表达式.
Review 1~3.
教育部特殊教育通報網 學生異動、接收操作說明.
第16章 天气预报 --Web Service调用
太阳和月球 第三章 第三节.
第2章 Java语言基础.
第9章 BroadcastReceiver的使用
Android进程间通讯.
Web前端开发 第21章:地理定位 阮晓龙 / 河南中医药大学管理科学与工程学科
美和科技大學資訊科技系 助理教授 美和科技大學資訊科技系 學生士
第三次全国农作物种质资源普查与收集行动 普查与征集技术方案 李立会 中国农业科学院作物科学研究所.
银川社保网上申报 宁夏人力资源和社会保障 网上服务大厅操作
Part 8 Broadcast Receiver、Service和App Widget
社群定位資訊系統 葉國賢 組員: 吳俊億 鄧硯文 郭冠良 魏毓男
Presentation transcript:

第10章 GPS位置服务与地图编程

本章知识结构图

支持位置服务的核心API 位置服务(Location-Based Services,LBS),又称定位服务或基于位置的服务,融合了GPS定位、移动通信、导航等多种技术,提供了与空间位置相关的综合应用服务。 Android为支持位置服务,提供了android.location包,该包中包含了与位置信息密切相关的类和接口,主要有:LocationManager、LocationProvider、Location、LocationListener。 LocationManager(定位管理者)类是访问Android系统位置服务的入口,所有定位相关的服务、对象都将由该类的对象来产生。和其他服务一样,程序不能直接创建LocationManager对象,而是通过Context的getSystemService()方法来获取。 LocationManager locMg=getSystemService(Context.LOCATION_SERVICE);

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, LocationListener listener):通过指定的 LocationProvider周期性地获取定位信息,并触发listener所对应的触发 器。

LocationManager中的常用方法 public void addProximityAlert(double latitude, double longitude, float radius, long expiration, PendingIntent intent):添加一个临近 警告,即不断监听手机的位置,当手机与固定点的距离小于指定范围时, 系统将会触发相应事件,进行处理。latitude指定中心点的经度, longitude指定中心点的纬度,radius指定一个半径长度,expiration指 定经过多少毫秒后该临近警告就会过期失效,-1指定永不过期,intent 指定临近该固定点时触发该intent对应的组件。 public void requestLocationUpdates(String provider, long minTime, float minDistance, PendingIntent intent):通过指定的 LocationProvider周期性地获取定位信息,并通过intent启动相应的组 件,进行事件处理,provider表示LocationProvider的名称,mimTime 表示每次更新的时间间隔,单位为毫秒,minDistance表示更新的最近 位置,单位为米,intent每次更新时启动的组件。

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

支持位置服务的核心API LocationProvider中的常用方法 int getAccuracy():返回LocationProvider的精度; int getPowerRequirement():返回LocationProvider对电量的要求; String getName():返回LocationProvider的名称; boolean hasMonetaryCost():判断LocationProvider是否收费; boolean supportsAltitude():判断LocationProvider是否支持高度信息; boolean supportsBearing():判断LocationProvider是否支持方向信息; boolean supportsSpeed():判断LocationProvider是否支持速度信息;

支持位置服务的核心API Location类是代表位置信息的抽象类,通过Location可获取定位信息的精度、高度、方向、纬度、经度、速度以及该位置的LocationProvider等信息。 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状态发生变化时回调该方法;

简单位置服务应用 获取位置信息的一般步骤: 1、通过位置服务获取系统的LocationManager对象; 2、使用Locationmanager,通过指定LocationProvider来获取Location对象,表示定位信息; 3、从Location对象中获取位置信息; 注意:获取用户的位置,涉及到用户的隐私,需要添加相关权限,并且需要用户授权方能访问。

百度地图编程 百度地图 Android SDK是一套基于Android 2.1及以上版本设备的应用程序接口。 通过该套 SDK可以开发适用于Android系统移动设备的地图应用,可以轻松访问百度地图服务和数据,构建功能丰富、交互性强的地图类应用程序。 地图:提供地图展示和地图操作功能,其中地图展示包括普通地图 (2D,3D)、卫星图和实时交通图;地图操作包括地图的点击、双 击、长按、缩放、旋转、改变视角等操作。 POI检索:支持周边检索、区域检索和城市内检索。周边检索是指 以某一点为中心,指定距离为半径,根据用户输入的关键词进行POI 检索;区域检索是指在指定矩形区域内、根据关键词进行POI检索; 城市内检索是指在某一城市内,根据用户输入的关键字进行POI检索; POI详情检索是指根据POI的ID信息,检索该兴趣点的详情。

百度地图编程 地理编码:提供地理坐标和地址之间相互转换的能力。正向地理编码: 实现了将中文地址或地名描述转换为地球表面上相应位置的功能;反向 地理编码:将地球表面的地址坐标转换为标准地址的过程。 线路规划:支持公交信息查询、公交换乘查询、驾车线路规划和步行路 径检索。公交信息查询可对公交详细信息进行查询;公交换乘查询可根 据起、终点,查询策略,进行线路规划方案;驾车线路规划提供不同策 略,规划驾车路线;步行路径检索支持步行路径的规划。 地图覆盖物:百度地图SDK支持多种地图覆盖物,展示更丰富的地图。 目前支持的地图覆盖物有:定位图层、地图标注(Marker)、几何图 形(点、折线、弧线、多边形等)、地形图图层、POI检索结果覆盖物、 线路规划结果覆盖物、热力图图层、瓦片图层等。 定位:采用GPS、WIFI、基站、IP混合定位模式,可使用Android定位 SDK获取定位信息,使用地图SDK定位图层进行位置展示。

使用百度地图的准备工作 1、申请百度地图API Key。打开百度地图API官方网站:http://developer. baidu .com/map/。将鼠标移动到“开发”导航菜单上,将显示下拉列表。选择其中的Android地图SDK或者Android定位SDK。

使用百度地图的准备工作 2、获取密钥的前提是要开发者登录,如果没有登录账号,则会跳转到登录界面。如果没有百度账号建议去注册一个,如果有百度账号则输入用户名密码直接登录,登录成功后进入下图所示页面。

使用百度地图的准备工作 3、单击创建应用按钮后,进入应用基本信息填写页面,在此需要填写应用名称、应用类型、数字签名、包名。

使用百度地图的准备工作 4、应用创建成功后,将会生成一个访问应用AK。

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

百度地图中的核心API MapView:显示地图的控件,主要获取地图数据并显示,能够捕捉屏幕触控、手势等操作,根据用户操作实时更新地图数据的显示。在使用该控件之前一定要确保已调用SDKInitializer.initialize(Context)方法执行初始化操作,通过该控件可获取具体的地图对象。 BaiduMap:百度地图对象,该类封装了地图对象的操作方法和接口,例如可为其添加各种事件监听器、设置地图显示的类型(普通图、卫星图)、改变地图状态(如缩放级别)、添加图层(如添加标记)等。 MapStatusUpdate:描述地图状态将要发生的变化,例如缩放级别的变化等; LatLng:地图上位置信息的封装,包括经度、纬度信息; Marker:标记,用于突出地图上的某个位置或建筑物信息; MarkerOptions:用于设置标记的一些属性信息,例如标记的图标、标记的位置坐标、标记的标题、标记是否可拖动等;

根据位置信息在地图上显示标记 设计并实现右图所示功能效果。输入任意经纬度后,单击定位按钮,即可在地图上标记该位置,并能缩放地图。为地图提供两种显示模式:普通模式和卫星模式。通过单选按钮可在两种模式间切换显示。

案例开发过程如下: (1)根据向导创建一个Android项目,导入百度地图SDK。具体做法是切换到Project视图,将下载的jar包拷贝到项目的libs文件夹下,然后在src/main文件夹下创建一个jniLibs文件夹,将下载的so文件拷贝到jniLibs文件夹下,如图所示。其中arm64-v8a、armeabi 、arm64-v7a、x86、x86_64等文件夹用于适配不同模拟器的CPU/ABI,可根据实际情况选择其中一个,建议全部导入。

(2)在AndroidManifest.xml文件中添加开发密钥、所需权限等信息。在< application>标签下添加开发密钥,具体如下: <meta-data android:name="com.baidu.lbsapi.API_KEY" android:value="shXnSyoNrlCQgwDXACC3QvSo" /> </application> 由于要调用百度地图的相关数据,因此需要添加相应的权限,那么究竟需要添加哪些权限?可以通过查看下载的百度地图的示例文件,从它的AndroidManifest.xml中进行拷贝即可,或者运行时根据提示信息一个个进行添加;

(3)在布局xml文件中添加地图控件。此处界面布局比较简单,只列出MapView控件的相关属性,代码如下。 <com.baidu.mapapi.map.MapView android:id="@+id/bmapView" android:layout_width="match_parent" android:layout_height="match_parent" android:clickable="true" /> (4)由于应用需要获取位置信息,需要用户动态授权,如果授权则执行初始化操作,否则直接提示用户无法定位。

(5)管理MapView的生命周期,让其随着Activity的变化而变化。调用MapView的生命方法之前,要先根据id找到这个控件。 (6)为单选按钮添加切换模式事件处理,判断选中的是哪个模式,然后设置显示模式,由于只有两种模式,非此即彼,所以在此只需判断普通模式是否选中即可,选中时显示普通视图,否则显示卫星视图。 (7)为定位按钮添加事件处理,首先获取用户输入的经纬度值,然后将其封装成LatLng对象,再根据坐标信息在地图上添加一个标记即可。 (8)为地图添加标记单击事件处理,单击标记后显示提示信息。