关闭

关闭

封号提示

内容

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

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

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

上传者: 谁掉了十块钱 2012-01-27 评分 3 0 26 4 118 暂无简介 简介 举报

简介:本文档为《第十二章__基于google_map开发个人移动地图ppt》,可适用于IT/计算机领域,主题内容包含基于GoogleMap开发个人移动地图基于GoogleMap开发个人移动地图江苏润和软件股份有限公司课程目标课程目标完成GoogleMap的开发完成符等。

基于GoogleMap开发个人移动地图基于GoogleMap开发个人移动地图江苏润和软件股份有限公司课程目标课程目标完成GoogleMap的开发完成文章管理器本章目标本章目标了解位置服务的概念了解地图密钥的申请方式掌握获取位置信息的方法掌握MapView和MapController的使用方法掌Google地图覆盖层的使用方法、位置服务、位置服务介绍介绍位置服务位置服务(LocationBasedServicesLBS)又称定位服务或基于位置的服务融合了GPS定位、移动通信、导航等多种技术提供了与空间位置相关的综合应用服务位置服务首先在日本得到商业化的应用年月DoCoMo发布了第一款具有三角定位功能的手持设备年月KDDI发布第一款具有GPS功能的手机基于位置的服务发展迅速已涉及到商务、医疗、工作和生活的各个方面为用户提供定位、追踪和敏感区域警告等一系列服务提供位置服务首先需要获得LocationManager对象位置服务位置服务获取LocationManager可以通过调用androidappActivitygetSystemService()函数实现androidappActivitygetSystemService()函数代码如下代码第行的ContextLOCATIONSERVICE指明获取的服务是位置服务代码第行的getSystemService()函数可以根据服务名称获取Android提供的系统级服务位置服务位置服务Android支持的系统级服务表 位置服务位置服务在获取到LocationManager后还需要指定LocationManager的定位方法然后才能够调用LocationManagergetLastKnowLocation()方法获取当前位置LocationManager支持的定位方法有两种GPS定位:可以提供更加精确的位置信息但定位速度和质量受到卫星数量和环境情况的影响网络定位:提供的位置信息精度差但速度较GPS定位位置服务位置服务LocationManager支持定位方法在指定LocationManager的定位方法后则可以调用getLastKnowLocation()方法获取当前的位置信息位置服务位置服务以使用GPS定位为例获取位置信息的代码如下Stringprovider=LocationManagerGPSPROVIDERLocationlocation=locationManagergetLastKnownLocation(provider)代码第行返回的Location对象中包含了可以确定位置的信息如经度、纬度和速度等通过调用Location中的getLatitude()和getLonggitude()方法可以分别获取位置信息中的纬度和经度示例代码如下doublelat=locationgetLatitude()doublelng=locationgetLongitude()位置服务位置服务LocationManager提供了一种便捷、高效的位置监视方法requestLocationUpdates()可以根据位置的距离变化和时间间隔设定产生位置改变事件的条件这样可以避免因微小的距离变化而产生大量的位置改变事件LocationManager中设定监听位置变化的代码如下第个参数是定位的方法GPS定位或网络定位第个参数是产生位置改变事件的时间间隔单位为微秒第个参数是距离条件单位是米第个参数是回调函数在满足条件后的位置改变事件的处理函数位置服务位置服务实现locationListener的代码如下代码将产生位置改变事件的条件设定为距离改变米时间间隔为秒LocationListenerlocationListener=newLocationListener(){publicvoidonLocationChanged(Locationlocation){}publicvoidonProviderDisabled(Stringprovider){}publicvoidonProviderEnabled(Stringprovider){}publicvoidonStatusChanged(Stringprovider,intstatus,Bundleextras){}}位置服务位置服务第行代码onLocationChanged()在设备的位置改变时被调用第行的onProviderDisabled()在用户禁用具有定位功能的硬件时被调用第行的onProviderEnabled()在用户启用具有定位功能的硬件时被调用第行的onStatusChanged()在提供定位功能的硬件的状态改变时被调用如从不可获取位置信息状态到可以获取位置信息的状态反之亦然为了使GPS定位功能生效还需要在AndroidManifestxml文件中加入用户许可实现代码如下位置服务位置服务位置服务一般都需要使用设备上的硬件最理想的调试方式是将程序上传到物理设备上运行但在没有物理设备的情况下也可以使用Android模拟器提供的虚拟方式模拟设备的位置变化调试具有位置服务的应用程序首先打开DDMS中的模拟器控制在LocationControls中的Longitude和Latitude部分输入设备当前的经度和纬度然后点击Send按钮就将虚拟的位置信息发送到Android模拟器中位置服务位置服务在adbshell命令中可以确定经纬度命令如下:geofix上海geofix广州geofix西安geofix北京geofix济南geofix新街口位置服务位置服务在程序运行过程中可以在模拟器控制器中改变经度和纬度坐标值程序在检测到位置的变化后会将最新的位置信息显示在界面上但笔者在版本的Android模拟器中进行调试时发现模拟器控制器只能成功的将虚拟坐标发送到模拟器中次超过次后模拟器对新发送的虚拟坐标不再响应位置服务位置服务下面是CurrentLocationDemo示例中LocationBasedServiceDemojava文件的完整代码:packageeduhrbeuLocationBasedServiceDemoimportandroidappActivityimportandroidcontentContextimportandroidosBundleimportandroidwidgetTextViewimportandroidlocationLocationimportandroidlocationLocationListenerimportandroidlocationLocationManager位置服务位置服务publicclassLocationBasedServiceDemoextendsActivity{OverridepublicvoidonCreate(BundlesavedInstanceState){superonCreate(savedInstanceState)setContentView(Rlayoutmain)StringserviceString=ContextLOCATIONSERVICELocationManagerlocationManager=(LocationManager)getSystemService(serviceString)Stringprovider=LocationManagerGPSPROVIDERLocationlocation=locationManagergetLastKnownLocation(provider)getLocationInfo(location)locationManagerrequestLocationUpdates(provider,,,locationListener)}位置服务位置服务privatevoidgetLocationInfo(Locationlocation){StringlatLongInfoTextViewlocationText=(TextView)findViewById(Ridtxtshow)if(location!=){doublelat=locationgetLatitude()doublelng=locationgetLongitude()latLongInfo="Lat:"lat"nLong:"lng}else{latLongInfo="Nolocationfound"}locationTextsetText("YourCurrentPositionis:n"latLongInfo)}privatefinalLocationListenerlocationListener=newLocationListener(){OverridepublicvoidonLocationChanged(Locationlocation){getLocationInfo(location)}位置服务位置服务OverridepublicvoidonProviderDisabled(Stringprovider){getLocationInfo()}OverridepublicvoidonProviderEnabled(Stringprovider){getLocationInfo()}OverridepublicvoidonStatusChanged(Stringprovider,intstatus,Bundleextras){}}}、申请地图密钥、申请地图密钥申请密钥的方法申请密钥的方法DebugKeyStore的存放位置:exclipse下:windowpreferencesandroidbuildDefaultdebugkeystore在dos下运行keytoollist–aliasandroiddebugkey–keystore"C:DocumentsandSettingssdhbkandroiddebugkeystore"storepassandroidkeypassandroid在dos下运行生成的指纹认证如(:::D:DE:BE:AF:B:A::F:DE::::)注册密钥注册密钥打开http:codegooglecomintlzhCNandroidmapsapisignuphtml填入你的认证指纹(MD)即可获得apiKey了,结果显示如下:感谢您注册Android地图API密钥!您的密钥是:SWYOoiEMuerVcUzdixvVrgEYmAOPKAQ在MapView中使用apiKey在MapView中使用apiKey使用得到的apiKey:在layout中加入MapView<comgoogleandroidmapsMapViewandroid:id="idmapview"android:layoutwidth="fillparent"android:layoutheight="fillparent"android:apiKey="jOkQoDJLCHAjauGXCRiSCGjKObcg">权限和library包权限和library包做GoogleMap的时候要有网络访问的权限<usespermissionandroid:name="androidpermissionACCESSCOARSELOCATION"><usespermissionandroid:name="androidpermissionINTERNET">Useslibrary包<userlibraryandroid:name=”comgoogleandroidmaps”>、使用GoogleMap、使用GoogleMap使用GoogleMap使用GoogleMapMapView的地图的显示控件可以设置不同的显示模式例如卫星模式、街道模式或交通模式MapController则是MapView的控制器可以控制MapView的显示中心和缩放级别等功能下面的内容以GoogleMapDemo为例说明如何在Android系统中开发Google地图程序这个示例将在程序内部设置一个坐标点然后在程序启动时使用MapView控件在地图上显示这个坐标点的位置使用GoogleMap使用GoogleMap在建立工程时将comgoogleandroidmaps的扩展库添加到工程中这样就可以使用Google地图的所有功能添加comgoogleandroidmaps扩展库的方式是在创建工程时在BuildTarget项中选择GoogleAPIs创建工程后修改reslayoutmainxml文件在布局中加入一个MapView控件并设置刚获取的“地图密钥”使用GoogleMap使用GoogleMapmainxml文件的完整代码如下<xmlversion=""encoding=""><LinearLayoutxmlns:android="http:schemasandroidcomapkresandroid"android:orientation="vertical"android:layoutwidth="fillparent"android:layoutheight="fillparent"><TextViewandroid:layoutwidth="fillparent"android:layoutheight="wrapcontent"android:text="stringhello"><comgoogleandroidmapsMapViewandroid:id="idmapview"android:layoutwidth="fillparent"android:layoutheight="fillparent"android:enabled="true"android:clickable="true"android:apiKey="mVKGeOWUzSzCIGSSlvlTwnrEDsiA"><LinearLayout>使用GoogleMap使用GoogleMap仅在布局中添加MapView控件还不能够直接在程序中调用这个控件还需要将程序本身设置成MapActivity(comgoogleandroidmapsMapActivity)MapActivity类负责处理显示Google地图所需的生命周期和后台服务管理下面先给出整个GoogleMapDemojava文件的完整代码使用GoogleMap使用GoogleMap使用GoogleMap使用GoogleMap使用GoogleMap使用GoogleMap第行代码获取了MapController第行和第行代码设定的经度为*E、纬度为*E的地理坐标点第行代码将这个坐标转化为GeoPoint再使用第行代码设置MapView的“显示中点”第行代码设置放大层级在第行代码将MapView显示区域的中心移动到第行设置的“显示中心”使用GoogleMap使用GoogleMap第行代码获取了MapController第行和第行代码设定的经度为*E、纬度为*E的地理坐标点第行代码将这个坐标转化为GeoPoint再使用第行代码设置MapView的“显示中点”第行代码设置放大层级在第行代码将MapView显示区域的中心移动到第行设置的“显示中心”使用GoogleMap使用GoogleMap第行代码是设定MapView的地图显示模式是否为卫星模式设置true则为卫星模式设置false则为普通模式第行代码isRouteDisplayed()方法是用来统计程序是否显示在Google地图中显示路径信息默认为不显示由于获取Google地图是需要使用互联网的所以在运行前还需要在AndroidManifestxml文件中添加允许访问互联网的许可AndroidManifestxml文件的完整代码如下使用GoogleMap使用GoogleMap运行结果图运行结果图运行结果如图地图模式卫星模式OverLay的使用OverLay的使用通过在MapView上添加覆盖层可以在指定的位置加添加注解、绘制图像或处理进行鼠标事件等Google地图上可以加入多个覆盖层所有覆盖层均都在地图图层之上每个覆盖层均可以对用户的点击事件做出响应创建覆盖层继承Overlay类的子类并通过重载draw()方法为指定位置添加注解重载onTap()方法处理用户的点击操作下面的代码是创建Overlay的最小代码集合OverLay的使用OverLay的使用OverLay的使用OverLay的使用第行代码中draw()方法shadow变量是用来区分绘制图层的false表示在覆盖层上进行绘制true则表示在隐藏层上进行绘制第行代码是onTap()方法的返回值返回false表示覆盖层不处理点击事件返回true则表示已经处理了点击事件在覆盖层绘制图形或文字需要使用“画布”(Canvas)来实现绘制的位置是屏幕坐标这就需要将地图上的物理坐标与屏幕坐标进行转换OverLay的使用OverLay的使用Projection类提供了物理坐标和屏幕坐标的转换功能可在经度和纬度表示的GeoPoint点和屏幕上Point点进行转换toPixels()方法将物理坐标转换为屏幕坐标fromPixels()方法将屏幕坐标转换为物理坐标两个方法的具体使用方法可以参考下面的代码OverLay的使用OverLay的使用下面的内容以MapOverlayDemo示例说明如何在Google地图上添加覆盖层并在预订的物理坐标上显示提示信息右图是MapOverlayDemo示例的运行结果OverLay的使用OverLay的使用TextOverlay类是MapOverlayDemo示例的覆盖层主要重载了draw()方法在指定的物理坐标上绘制了标记点和提示文字TextOverlayjava文件的核心代码如下OverLay的使用OverLay的使用OverLay的使用OverLay的使用第行代码定义了绘制半径变量mRadius供定义绘制范围使用第行代码使用Projection完成了从物理坐标到屏幕坐标的转换OverLay的使用OverLay的使用第行代码oval设定标记点的大小第行设置了绘制颜色第行开启了平滑设置防止文字出现锯齿第行代码绘制了圆形的标记点第行代码绘制了提示文字第个和第个参数是绘制屏幕的x坐标和y坐标建立了覆盖层后还需要把覆盖层添加到MapView上MapOverlayDemojava的核心代码如下OverLay的使用OverLay的使用OverLay的使用OverLay的使用OverLay的使用OverLay的使用第行代码实例化了TextOverlay对象第行代码通过getOverlays()方法获取MapView已有的覆盖层第行代码使用add()方法将TextOverlay对象对象添加到MapView中项目案例项目案例文章管理器需求说明记录文章磁盘(sd卡系统)===》资源管理器存储的文章可以增删改查文章可以阅读(翻页标签(标签可以多个))查找(搜索字符的确切位置)即列表定位文章分类谢谢!谢谢!

类似资料

编辑推荐

GB-T 1172黑色金属硬度及强度换算值.pdf

电磁学【赵凯华,陈熙谋】.pdf

长城传说故事.pdf

越尘集.doc

六至九世纪中国政治史.pdf

职业精品

精彩专题

上传我的资料

精选资料

热门资料排行换一换

  • My+Country+and+M…

  • 纽约摄影学院教程.pdf

  • 明清徽州社会经济资料丛编(第二辑…

  • 中国移民史+第6卷+清·民国时期…

  • Jean Racine - Be…

  • 中国移民史+第3卷+隋唐五代时期…

  • 金维诺.doc

  • 揭秘特科[简介]1.pdf

  • 揭秘特科[简介]2.pdf

  • 资料评价:

    / 51
    所需积分:1 立即下载

    意见
    反馈

    返回
    顶部