首页 第十二章__基于google_map开发个人移动地图

第十二章__基于google_map开发个人移动地图

举报
开通vip

第十二章__基于google_map开发个人移动地图null基于Google Map 开发个人移动地图基于Google Map 开发个人移动地图江苏润和软件股份有限公司 课程目标课程目标1.完成Google Map的开发 2.完成文章管理器 本章目标本章目标1.了解位置服务的概念 2.了解地图密钥的申请方式 3. 掌握获取位置信息的方法 4. 掌握MapView和MapController的使用方法 5. 掌Google地图覆盖层的使用方法1、位置服务1、位置服务1.1介绍1.1介绍位置服务 位置服务(Location-Based Services,LBS),又称...

第十二章__基于google_map开发个人移动地图
null基于Google Map 开发个人移动地图基于Google Map 开发个人移动地图江苏润和软件股份有限公司 课程目标课程目标1.完成Google Map的开发 2.完成文章管理器 本章目标本章目标1.了解位置服务的概念 2.了解地图密钥的申请方式 3. 掌握获取位置信息的 方法 快递客服问题件处理详细方法山木方法pdf计算方法pdf华与华方法下载八字理论方法下载 4. 掌握MapView和MapController的使用方法 5. 掌Google地图覆盖层的使用方法1、位置服务1、位置服务1.1介绍1.1介绍位置服务 位置服务(Location-Based Services,LBS),又称定位服务或基于位置的服务,融合了GPS定位、移动通信、导航等多种技术,提供了与空间位置相关的综合应用服务 位置服务首先在日本得到商业化的应用 2001年7月,DoCoMo发布了第一款具有三角定位功能的手持设备 2001年12月,KDDI发布第一款具有GPS功能的手机 基于位置的服务发展迅速,已涉及到商务、医疗、工作和生活的各个方面,为用户提供定位、追踪和敏感区域警告等一系列服务 提供位置服务,首先需要获得LocationManager对象 1.1位置服务1.1位置服务获取LocationManager可以通过调用android.app.Activity.getSystemService()函数实现 android.app.Activity.getSystemService()函数代码如下 代码第1行的Context.LOCATION_SERVICE指明获取的服务是位置服务 代码第2行的getSystemService()函数,可以根据服务名称获取Android提供的系统级服务1.1位置服务1.1位置服务Android支持的系统级服务表  1.1位置服务1.1位置服务在获取到LocationManager后,还需要指定LocationManager的定位方法,然后才能够调用LocationManager getLastKnowLocation()方法获取当前位置 LocationManager支持的定位方法有两种 GPS定位:可以提供更加精确的位置信息,但定位速度和质量受到卫星数量和环境情况的影响 网络定位:提供的位置信息精度差,但速度较GPS定位 1.1位置服务1.1位置服务LocationManager支持定位方法 在指定LocationManager的定位方法后,则可以调用getLastKnowLocation()方法获取当前的位置信息 1.1位置服务1.1位置服务以使用GPS定位为例,获取位置信息的代码如下 String provider = LocationManager.GPS_PROVIDER; Location location = locationManager.getLastKnownLocation(provider); 代码第2行返回的Location对象中,包含了可以确定位置的信息,如经度、纬度和速度等 通过调用Location中的getLatitude()和getLonggitude()方法可以分别获取位置信息中的纬度和经度,示例代码如下 double lat = location.getLatitude(); double lng = location.getLongitude(); 1.1位置服务1.1位置服务LocationManager提供了一种便捷、高效的位置监视方法requestLocationUpdates(),可以根据位置的距离变化和时间间隔设定产生位置改变事件的条件,这样可以避免因微小的距离变化而产生大量的位置改变事件 LocationManager中设定监听位置变化的代码如下 第1个参数是定位的方法,GPS定位或网络定位 第2个参数是产生位置改变事件的时间间隔,单位为微秒 第3个参数是距离条件,单位是米 第4个参数是回调函数,在满足条件后的位置改变事件的处理函数 1.1位置服务1.1位置服务 实现locationListener的代码如下 代码将产生位置改变事件的条件设定为距离改变10米,时间间隔为2秒 LocationListener locationListener = new LocationListener(){ public void onLocationChanged(Location location) { } public void onProviderDisabled(String provider) { } public void onProviderEnabled(String provider) { } public void onStatusChanged(String provider, int status, Bundle extras) { } }; 1.1位置服务1.1位置服务 第2行代码onLocationChanged()在设备的位置改变时被调用 第4行的onProviderDisabled()在用户禁用具有定位功能的硬件时被调用 第6行的onProviderEnabled()在用户启用具有定位功能的硬件时被调用 第8行的onStatusChanged()在提供定位功能的硬件的状态改变时被调用,如从不可获取位置信息状态到可以获取位置信息的状态,反之亦然 为了使GPS定位功能生效,还需要在AndroidManifest.xml文件中加入用户许可 实现代码如下 1.1位置服务1.1位置服务 位置服务一般都需要使用设备上的硬件,最理想的调试方式是将程序上传到物理设备上运行,但在没有物理设备的情况下,也可以使用Android模拟器提供的虚拟方式模拟设备的位置变化,调试具有位置服务的应用程序 首先打开DDMS中的模拟器控制,在Location Controls中的Longitude和Latitude部分输入设备当前的经度和纬度,然后点击Send按钮,就将虚拟的位置信息发送到Android模拟器中1.1位置服务1.1位置服务 在 adb shell 命令中可以确定经纬度,命令如下: geo fix 121.46690368652344 31.22337141316801 上海 geo fix 113.27522277832031 23.128994281453547 广州 geo fix 108.94961357116699 34.266225427528674 西安 geo fix 116.39649868011475 39.90861699713222 北京 geo fix 117.02241897583008 36.67557848857602 济南 geo fix 118.7840723991394 32.041013054723734 新街口1.1位置服务1.1位置服务 在程序运行过程中,可以在模拟器控制器中改变经度和纬度坐标值,程序在检测到位置的变化后,会将最新的位置信息显示在界面上 但笔者在1.5版本的Android模拟器中进行调试时,发现模拟器控制器只能成功的将虚拟坐标发送到模拟器中2次,超过2次后模拟器对新发送的虚拟坐标不再响应1.1位置服务1.1位置服务 下面是CurrentLocationDemo示例中LocationBasedServiceDemo.java文件的完整代码: package edu.hrbeu.LocationBasedServiceDemo; import android.app.Activity; import android.content.Context; import android.os.Bundle; import android.widget.TextView; import android.location.Location; import android.location.LocationListener; import android.location.LocationManager; 1.1位置服务1.1位置服务 public class LocationBasedServiceDemo extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); String serviceString = Context.LOCATION_SERVICE; LocationManager locationManager = (LocationManager)getSystemService(serviceString); String provider = LocationManager.GPS_PROVIDER; Location location = locationManager.getLastKnownLocation(provider); getLocationInfo(location); locationManager.requestLocationUpdates(provider, 2000, 0, locationListener); } 1.1位置服务1.1位置服务 private void getLocationInfo(Location location){ String latLongInfo; TextView locationText = (TextView)findViewById(R.id.txtshow); if (location != null){ double lat = location.getLatitude(); double lng = location.getLongitude(); latLongInfo = "Lat: " + lat + "\nLong: " + lng; } else{ latLongInfo = "No location found"; } locationText.setText("Your Current Position is:\n" + latLongInfo); } private final LocationListener locationListener = new LocationListener(){ @Override public void onLocationChanged(Location location) { getLocationInfo(location); }1.1位置服务1.1位置服务 @Override public void onProviderDisabled(String provider) { getLocationInfo(null); } @Override public void onProviderEnabled(String provider) { getLocationInfo(null); } @Override public void onStatusChanged(String provider, int status, Bundle extras) { } }; } 2、申请地图密钥2、申请地图密钥2.1申请密钥的方法2.1申请密钥的方法Debug KeyStore的存放位置: exclipse下:window/preferences/android/build/Default debug keystore 在dos下运行 keytool -list –alias androiddebugkey –keystore "C:\Documents and Settings\sdhbk\.android\debug.keystore" -storepass android -keypass android 在dos下运行生成的指纹认证如(48:35:92:1D:DE:BE:AF:B7:A1:54:6F:DE:44:52:71:89) 2.2注册密钥2.2注册密钥打开 http://code.google.com/intl/zh-CN/android/maps-api-signup.html 填入你的认证指纹(MD5)即可获得apiKey了,结果显示如下: 感谢您注册 Android 地图 API 密钥! 您的密钥是: 0SWYOo4iEMu2e0rV0c3UzdixvVrgEY57mAOPKAQ2.3在MapView中使用apiKey2.3在MapView中使用apiKey使用得到的apiKey: 在layout中加入MapView 2.4权限和library包2.4权限和library包做Google Map的时候要有网络访问的权限 Uses-library包 3、使用Google Map3、使用Google Map3.1使用Google Map3.1使用Google MapMapView的地图的显示控件,可以设置不同的显示模式,例如卫星模式、街道模式或交通模式 MapController则是MapView的控制器,可以控制MapView的显示中心和缩放级别等功能 下面的 内容 财务内部控制制度的内容财务内部控制制度的内容人员招聘与配置的内容项目成本控制的内容消防安全演练内容 以GoogleMapDemo为例,说明如何在Android系统中开发Google地图程序 这个示例将在程序内部设置一个坐标点,然后在程序启动时,使用MapView控件在地图上显示这个坐标点的位置3.1使用Google Map3.1使用Google Map在建立 工程 路基工程安全技术交底工程项目施工成本控制工程量增项单年度零星工程技术标正投影法基本原理 时将com.google.android.maps的扩展库添加到工程中,这样就可以使用Google地图的所有功能 添加com.google.android.maps扩展库的方式是在创建工程时,在Build Target项中选择Google APIs 创建工程后,修改/res/layout/main.xml文件,在布局中加入一个MapView控件,并设置刚获取的“地图密钥”3.1使用Google Map3.1使用Google Mapmain.xml文件的完整代码如下 3.1使用Google Map3.1使用Google Map仅在布局中添加MapView控件,还不能够直接在程序中调用这个控件,还需要将程序本身设置成MapActivity(com.google.android.maps.MapActivity) MapActivity类负责处理显示Google地图所需的生命周期和后台服务管理 下面先给出整个GoogleMapDemo.java文件的完整代码 3.1使用Google Map3.1使用Google Map3.1使用Google Map3.1使用Google Map3.1使用Google Map3.1使用Google Map第20行代码获取了MapController 第22行和第23行代码设定的经度为126.676530486 * 1E6、纬度为45.7698895661 * 1E6的地理坐标点 第26行代码将这个坐标转化为GeoPoint再使用 第26行代码设置MapView的“显示中点” 第27行代码设置放大层级 在第28行代码将MapView显示区域的中心移动到第26行设置的“显示中心” 3.1使用Google Map3.1使用Google Map第20行代码获取了MapController 第22行和第23行代码设定的经度为126.676530486 * 1E6、纬度为45.7698895661 * 1E6的地理坐标点 第26行代码将这个坐标转化为GeoPoint再使用 第26行代码设置MapView的“显示中点” 第27行代码设置放大层级 在第28行代码将MapView显示区域的中心移动到第26行设置的“显示中心” 3.1使用Google Map3.1使用Google Map 第30行代码是设定MapView的地图显示模式是否为卫星模式,设置true则为卫星模式,设置false则为普通模式 第34行代码isRouteDisplayed()方法,是用来统计程序是否显示在Google地图中显示路径信息,默认为不显示 由于获取Google地图是需要使用互联网的,所以在运行前还需要在AndroidManifest.xml文件中,添加允许访问互联网的许可 AndroidManifest.xml文件的完整代码如下 3.1使用Google Map3.1使用Google Map 3.2运行结果图3.2运行结果图 运行结果如图 地图模式卫星模式 3.3OverLay的使用3.3OverLay的使用通过在MapView上添加覆盖层,可以在指定的位置加添加注解、绘制图像或处理进行鼠标事件等 Google地图上可以加入多个覆盖层,所有覆盖层均都在地图图层之上,每个覆盖层均可以对用户的点击事件做出响应 创建覆盖层继承Overlay类的子类,并通过重载draw()方法为指定位置添加注解,重载onTap()方法处理用户的点击操作 下面的代码是创建Overlay的最小代码集合 3.3OverLay的使用3.3OverLay的使用 3.3OverLay的使用3.3OverLay的使用第3行代码中draw()方法,shadow变量是用来区分绘制图层的 false表示在覆盖层上进行绘制 true则表示在隐藏层上进行绘制 第14行代码是onTap()方法的返回值 返回false表示覆盖层不处理点击事件 返回true则表示已经处理了点击事件 在覆盖层绘制图形或文字需要使用“画布”(Canvas)来实现,绘制的位置是屏幕坐标,这就需要将地图上的物理坐标与屏幕坐标进行转换 3.3OverLay的使用3.3OverLay的使用Projection类提供了物理坐标和屏幕坐标的转换功能,可在经度和纬度表示的GeoPoint点和屏幕上Point点进行转换 toPixels()方法将物理坐标转换为屏幕坐标 fromPixels()方法将屏幕坐标转换为物理坐标 两个方法的具体使用方法可以参考下面的代码 3.3OverLay的使用3.3OverLay的使用 下面的内容以MapOverlayDemo示例,说明如何在Google地图上添加覆盖层,并在预订的物理坐标上显示提示信息 右图是MapOverlayDemo示例的运行结果 3.3OverLay的使用3.3OverLay的使用 TextOverlay类是MapOverlayDemo示例的覆盖层,主要重载了draw()方法,在指定的物理坐标上绘制了标记点和提示文字 TextOverlay.java文件的核心代码如下 3.3OverLay的使用3.3OverLay的使用3.3OverLay的使用3.3OverLay的使用 第2行代码定义了绘制半径变量mRadius,供定义绘制范围使用 第14行代码使用Projection完成了从物理坐标到屏幕坐标的转换 3.3OverLay的使用3.3OverLay的使用 第16行代码oval设定标记点的大小 第19行设置了绘制颜色 第20行开启了平滑设置,防止文字出现锯齿 第23行代码绘制了圆形的标记点 第24行代码绘制了提示文字,第2个和第3个参数是绘制屏幕的x坐标和y坐标 建立了覆盖层后,还需要把覆盖层添加到MapView上 MapOverlayDemo.java的核心代码如下 3.3OverLay的使用3.3OverLay的使用3.3OverLay的使用3.3OverLay的使用3.3OverLay的使用3.3OverLay的使用 第22行代码实例化了TextOverlay对象 第23行代码通过getOverlays()方法,获取MapView已有的覆盖层 第24行代码使用add()方法将TextOverlay对象对象添加到MapView中项目案例项目案例 文章管理器 需求说明 记录文章,磁盘(sd卡,系统)===》资源管理器 存储的文章可以增删改查 文章可以阅读(翻页,标签(标签可以多个)) 查找(搜索字符的确切位置),即列表定位 文章分类 谢谢!谢谢!
本文档为【第十二章__基于google_map开发个人移动地图】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_664381
暂无简介~
格式:ppt
大小:1MB
软件:PowerPoint
页数:0
分类:互联网
上传时间:2012-01-27
浏览量:20