您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 公司方案 > 第16章 Android中的googlemap服务
《Android课程》实验手册第十六章Android中的GoogleMap服务编写人:李玮玮编写日期:2013-2-21修改记录修改时间修改人修改内容2013.2.21李玮玮文档创建目录一、内容概述...................................................................................................................3二、实验一在地图上显示当前位置................................................................................42.1实验目的............................................................................................................42.2准备知识............................................................................................................42.3实验步骤..........................................................................................................132.4实验结论..........................................................................................................22三、作业........................................................................................................................23第十六章Android中的GoogleMap服务一、内容概述上次实验学习了GPS的定位技术,本次实验将上一次实验的GPS定位技术应用于GoogleMap服务中,GPS信息与Map应用的结合能够开发出定位、导航等应用程序。本章的主要内容是对Android中GoogleMap的介绍,通过本章实验我们将能够掌握Android中的定位、导航功能。二、实验一在地图上显示当前位置2.1实验目的本次试验我们将在Android中实现在地图上显示当前位置,并且能够定时更新当前所在位置,实现导航功能。2.2准备知识1.调用GoogleMap的准备Android系统默认并不支持调用GoogleMap,为正常调用GoogleMap服务,需要先进行如下准备工作。1)获取MapAPIKey单击Eclipse主菜单:WindowPreferences单击左侧“AndroidBuild弹出如下对话框:图16.1查看Android模拟器的Keystore2)上图中显示的便是模拟器的keystore的存储位置,接下来应用程序需要Androidkeystore的存储位置根据该keystore来生成GoogleAPI的Key。3)用JDK提供的keytool工具为Androidkeystore生成认证指纹,启动命令行窗口输入如下命令:keytool–list–keystoreAndroidkeystore的存储位置其中Androidkeystore的存储位置要替换成图16.1中Androidkeystore的存储位置,如:keytool-list-keystoreD:\ProgramFiles\android-sdks\.android\debug.keystore就会得到MD5的指纹,记录下此记录:二十段用冒号割开的数字段,每段是两个十六进制的数。上图中红色删除线下的部分。4)在GoogleAPIsConsole上创建项目,并且注册MapsAPI。○1首先,去这个网址:用Gmail的账户登录,如果是第一次的话,需要创建项目,默认情况会创建一个叫做APIProject的项目。登陆之后出现页面:○2单击“Createproject...”后到达页面:○3点击左边的Services,会在中间看到很多的APIs和Services,找到GoogleMapsAndroidAPIv2,然后把它设置成on,需要接受一些服务条款。之后跳转到页面:○4勾选同意条款,单击接受按钮。5)获得APIKey在左边的导航条中选择APIAccess。单击设置为ON在出来的页面中选择CreateNewAndroidKey...就可以生成key了:然后在对话框中填入:SHA-1指纹,分号隔开,然后是应用的packagename.然后就会生成一个Key。比如:最后生成的APIKey如下图所示:2.把APIKey加入应用程序1)首先,应用程序。建立好应用程序,注意包名应该和申请key时候的包名一致。输入之前生成的MD5指纹(因人而异)包名分号2)之后修改AndroidManifest.xml文件:在application元素中加入子标签meta-dataandroid:name=com.google.android.maps.v2.API_KEYandroid:value=your_api_key/其中your_api_key置换成自己申请的APIKey加入一些许可信息permissionandroid:name=com.example.mapdemo.permission.MAPS_RECEIVEandroid:protectionLevel=signature/uses-permissionandroid:name=com.example.mapdemo.permission.MAPS_RECEIVE/其中com.example.mapdemo换成自己的包名。3.AndroidManifest.xml中的其他具体设置1.许可设置uses-permission作为manifest的子元素,需要加入下列一些:uses-permissionandroid:name=android.permission.INTERNET/uses-permissionandroid:name=android.permission.WRITE_EXTERNAL_STORAGE/uses-permissionandroid:name=com.google.android.providers.gsf.permission.READ_GSERVICES/uses-permissionandroid:name=android.permission.ACCESS_COARSE_LOCATION/uses-permissionandroid:name=android.permission.ACCESS_FINE_LOCATION/2.OpenGLESV2特性支持同样也是作为manifest的子元素。uses-featureandroid:glEsVersion=0x00020000android:required=true/4.加上地图布局文件:?xmlversion=1.0encoding=utf-8?fragmentxmlns:android=:id=@+id/mapandroid:layout_width=match_parentandroid:layout_height=match_parentclass=com.google.android.gms.maps.MapFragment/5.遇到的问题和解决的方法程序编译错误,显示找不到一些类如图:解决这个问题,首先需要把GooglePlayservices的类库加载进来:在Eclipse里面选择:FileImportAndroidExistingAndroidCodeIntoWorkspace然后点击Next.之后Browse...,找到路径下的android-sdk-folder/extras/google/google_play_services/libproject/google-play-services_lib,然后选择Finish。第二步是添加对这个库的引用:在自己的项目上右键,选Properties,左边选Android,然后在下面的Library里面Add刚才的google-play-services_lib。123之后程序就应该能运行了。接着你可能会碰到下面的问题:程序运行成功,但是显示Thisappwon'trununlessyouupdateGooglePlayservices.如图:有传言说V2不能在AVD上运行,可能Google还会对此问题进行更新。经过搜索,这个问题已经在Stackoverflow上被讨论过了,链接:所以看来在AVD上运行的问题已经被解决了。解决的方法就是在AVD上安装两个包(GooglePlayStore和GooglePlayservices):vending.apk和gms.apk,(给一个网盘链接:=190602&uk=2701745266)并且AVD就选择普通的API16就行,不需要是GoogleAPIs。我选的是Android4.1API16.安装时把那两个包放在当前目录,用命令行安装:之后运行程序,就出地图了:补充说明因为MapFragment只在API12及之后的版本才有,所以对于之前的版本需要使用SupportLibrary来进行辅助。如果minSdkVersion设置为12以前的,就需要使用SupportLibrary。需要更改的地方是:布局文件中,把MapFragment改为SupportMapFragment。MainActivity继承自FragmentActivity而不是Activity。(需要importandroid.support.v4.app.FragmentActivity;)2.3实验步骤1.新建工程GoogleMapTest,包名为com.example.googlemaptest,将一张名为pos.png的图片导入到drawable目录下,用于标注当前的位置。项目中Activity的名字为MainActivity.java,对应的布局文件名字为activity_main.xml,布局文件中包括2个输入框,用于接收用户输入的经纬度信息,有1个按钮,用于根据用户输入的经纬度定位具体位置;有两个单选按钮,分别显示普通地图和卫星地图;有1个地图组件。该工程目录结构及布局文件界面如下图所示:图16.1工程目录结构图上图中的googlemap.xml布局文件中是地图组件,其代码如下:?xmlversion=1.0encoding=utf-8?fragmentxmlns:android=:map=:id=@+id/mapViewandroid:layout_width=match_par
本文标题:第16章 Android中的googlemap服务
链接地址:https://www.777doc.com/doc-5730753 .html