【Android源码 栏目提醒】:文章导读:在新的一年中,各位网友都进入紧张的学习或是工作阶段。
网学会员整理了Android源码 -通信工程毕业设计(论文)-基于android和google_map的地图定位程序 - 毕业设计的相关内容供大家参考,祝大家在新的一年里工作和学习顺利!
合 肥 学 院 课 程 设 计 报 告题 目:基于
android 和 google map 的地图 定位程序系 别:_ 电子信息与电气工程系专 业:_ 通信工程______________班 级:___ 08 通信(2)班__________学 号:___________成 绩:_____________________ ___ 2011 年 12 月 28 日摘要:
Android 是一种以 Linux 为基础的开放
源码操作系统,主要使用于便携设备。
它由谷歌公司和开放手持设备联盟开发和领导。
除了开放手持设备联盟之外,
Android 还拥有许多由全球各地开发者组成的开源社区来专门负责开发
Android 应用程序和第三方
Android 操作系统来延长和扩展
Android 的功能和性能。
2011 年 8 月,
Android 操作系统在全球智能手机操作系统的市场份额已达 48,成为全球第一大智能手机操作系统,跃居全球最受欢迎的智能手机平台。
Google Map,是 Google 公司向全球提供的电子地图服务,包括局部详细的卫星照片。
由于 Google 地图是一项电子地图服务,因而拥有比纸质地图更多的优越性,特别是近年来移动设备的智能化,网络速度的提升,更是让 Google 地图与人们的生活产生更为紧密的联系,因而倍受人们的赞誉。
Android 操作系统平台很容易跟 Google 的一些应用如 Google Map 整合。
在
Android 应用中,如果能在其中加入 Google Map,则会为应用增添强大的功能,目前不少 LBS 应用基于地理位置的应用就是充分将移动跟地图结合起来。
本设计旨在为使用基于
Android 操作系统的移动设备(如手机、平板电脑等)的用户提供一种准确、方便的定位系统,可以通过经纬度信息,甚至仅仅是地名,就能在地图上找到该地的地理位置。
软件的开发使用 Java 语言、Google APIsAndroid 2.2开发包和 Eclipse3.3 开发环境。
关键词:
Android;Google Map;定位;Google APIs;Json 1 目录一、设计目标.................................................................................................................................4 1.1
ANDROID 平台简介 ..........................................................................................................................4 1.2GOOGLE 地图简介............................................................................................................................4 1.3 功能实现........................................................................................................................................4二、环境配置.................................................................................................................................5 2.1 下载相关软件................................................................................................................................5 2.2 安装软件和配置环境....................................................................................................................5 2.2.1 安装 JDK..................................................................................................................................5 2.2.2 安装 Eclipse.............................................................................................................................6 2.2.3 配置
Android 环境 ..................................................................................................................6 2.3 创建基于 GOOGLEAPIS 的 AVD .......................................................................................................6 2.4 获取 GOOGLEMAPAPI......................................................................................................................7 2.4.1 安装 GoogleMapAPI .............................................................................................................7 2.4.2 获得 GoogleMapAPIKey .......................................................................................................7三、设计思路.................................................................................................................................9 3.1 通过经纬度定位的设计思路 ........................................................................................................9 3.2 通过地名定位的设计思路 ............................................................................................................9四、设计过程...............................................................................................................................11 4.1GOOGLEMAPAPI 的使用 ................................................................................................................11 4.2 通过经纬度定位的实现 ..............................................................................................................11 4.2.1 创建工程............................................................................................................................... 11 4.2.2 修改 AndroidManifest.xml 文件 .........................................................................................11 4.2.3 修改 main.xml....................................................................................................................... 11 4.2.4 实现 MapActivity ..................................................................................................................12 4.2.5MapController 的使用 .........................................................................................................12 4.2.6 增加标记............................................................................................................................... 12 4.3 通过地名定位的实现..................................................................................................................13 4.3.1 监听响应函数的实现 ...........................................................................................................13 4.3.2getLocationInfo函数的实现 ...............................................................................................13 4.3.3getPoint函数的实现 ...........................................................................................................14五、结果测试...............................................................................................................................15 5.1 启动 MAPIII...................................................................................................................................15 5.2 一些简单的操作..........................................................................................................................16 5.3 测试通过经纬度定位..................................................................................................................17 5.4 测试通过地名定位......................................................................................................................17 5.5 退出程序......................................................................................................................................18六、程序发布...............................................................................................................................19 6.1 生成 KEYSTORE ................................................................................................................................19 6.2ECLIPSE 生成 APK 文件 ....................................................................................................................19 2七、总结 ......................................................................................................................................21参考文献 ......................................................................................................................................22附录: ..........................................................................................................................................23 1.AndroidManifest.xml...................................................................................................................23 2.main.xml.....................................................................................................................................23 3.strings.xml...................................................................................................................................25 4.MapIIIActivity.java ......................................................................................................................26 5.R.java ..........................................................................................................................................31 6.包含“合肥学院新区”的相关地理信息的 Json 数据 ............................................................32 3一、设计目标1.1
Android 平台简介
Android 是 Google 于 2007 年 11 月 05 日宣布的基于 Linux 平台的开源移动操作系统的名称,该平台由操作系统、中间件、用户界面和应用软件组成。
它采用软件堆层SoftwareStack,又名软件叠层的架构,主要分为三部分。
底层以 Linux 内核工作为基础,由 C 语言开发,只提供基本功能;中间层包括函数库 Library 和虚拟机 Virtual Machine,由 C开发。
最上层是各种应用软件,包括通话程序,短信程序等,应用软件则由各公司自行开发,以Java 作为编写程序的一部分。
不存在任何以往阻碍移动产业创新的专有权障碍, 号称是首个为移动终端打造的真正开放和完整的移动软件。
2011 年第一季度,
Android 在全球的市场份额首次超过塞班系统, 跃居全球第一。
2011年 11 月数据,
Android 占据全球智能手机操作系统市场 52.5的份额,中国市场占有率为58。
1.2 Google 地图简介 提起 Google,人们最先想到的一定是它的搜索引擎,不过继搜索引擎之后,Google 地 在图的影响力越来越大。
Android 系统刚刚起步的时候, Google 就看到了基于定位服务的应用潜力,并将 Google 地图的成功经验带入了
Android 系统当中。
很多基于定位功能的应用程序最终都需要显示地图,Google 地图已经可以非常成熟地显示交互式地图,其商业模式还允许第三方网站将 Google 地图嵌入到自己的页面中。
Google 地图的大部分功能都可以在
Android 平台上实现,
Android 平台下的开发者可以将 Google 地图嵌入到自己的应用程序中。
Google 地图是 Google 公司提供的电子地图服务,包括局部详细的卫星照片。
能提供三种视图:一是矢量地图(传统地图) ,可提供政区和交通以及商业信息;二是不同分辨率的卫星照片(俯视图,跟 Google Earth 上的卫星照片基本一样) ;三是地形视图,可以用以显示地形和等高线。
1.3 功能实现 本设计旨在为使用基于
Android 操作系统的移动设备(如手机、平板电脑等)的用户提供一种准确、方便的定位系统,可以通过经纬度信息,甚至仅仅是地名,就能在地图上找到该地的地理位置。
软件的开发使用 Java 语言、Google APIsAndroid 2.2开发包和 Eclipse 3.3开发环境。
4二、环境配置2.1 下载相关软件 表 2.1 相关软件软件名称 对应下载网址JDK6.0 http://www.oracle.com/technetwork/java/javase/downloads/index.htmlEclipse 3.3 http://www.eclipse.org/downloads/
Android SDK http://developer.
android.com/sdk/index.html2.2 安装软件和配置环境2.2.1 安装 JDK 下 载 好 JDK 是 一 个 可 执 行 安 装 程 序 , 双 击 安 装 。
假 设 安 装 路 径 为 : C:/ProgramFiles/Java/jdk1.6.0_05(当然其他路径也可以) 。
JDK 安装完成之后要设置系统环境变量:我的电脑点右键,选择“属性” ,选择“高级”标签,进入环境变量设置。
环境变量设置,分别设置三个环境变量:JAVA_HOME、path 变量、classpath 变量。
1.设置 JAVA_HOME 在系统环境变量那一栏中,点“新建”JAVA_HOME(JAVA_HOME 指向的是 JDK 的安装路径)。
变量名:JAVA_HOME;变量值:C:/Program Files/Java/jdk1.6.0_05。
设置 JAVA_HOME 量的目的:(1)为了方便引用,比如,JDK 安装 C:/Program Files/Java/jdk1.6.0_05 目录里,则设置 JAVA_HOME 为该目录路径 那么以后要使用这个路径的时候 只需输入JAVA_HOME即可避免每次引用都输入很长的路径串。
(2) 归一原则 当 JDK 路径改变的时候 仅需更改 JAVA_HOME 的变量值即可。
否则就要更改任何用绝对路径引用 JDK 目录的文档没有改全则某个程序找不到 JDK 后果将导致系统崩溃。
(3)第三方软件会引用约定好的 JAVA_HOME 变量 否则不能正常使用该软件。
2.设置 path 变量 在系统变量里找到 path 变量选择“编辑”变量名:path ,变量值: JAVA_HOME/bin。
设置 path 变量的目的: 使得我们能够在系统中的任何地方运行 java 应用程序,比如 javac、java、javah 等这 就 要 找 到 我 们 安 装 JDK 的 目 录 , 比 如 我 们 的 JDK 安 装 在 C:/ProgramFiles/Java/jdk1.6.0_05 目录下那么在 C:/Program Files/Java/jdk1.6.0_05/bin 目录下就是我们常用的 java 应用程序我们就需要把 C:/jdk1.6.0/bin 这个目录加到 path 环境变量里面。
3.设置 classpath 环境在 系 统 环 境 变 量 那 一 栏 中 点 “ 新 建 ” classpath 。
变 量 名 : classpath , 变 量值:.JAVA_HOME/lib/JAVA_HOME/jre/lib/(注意,CLASSPATH 最前面是有个“.”的, 5表示当前目录,这样当我们运行 java AClass 的时候,系统就会先在当前目录寻找 AClass文件了)。
2.2.2 安装 Eclipse 将下载的 Eclipse3.3 压缩包解压到相应的安装目录即可。
2.2.3 配置
Android 环境 为了让开发过程更轻松,Google 还编写了一款 ADT 的 Eclipse 插件。
要想安装该插件,请执行以下步骤。
(1) 启动 Eclipse,然后选择 HelpgtSoftware Updates。
(2) 单击 Available Software 选项卡。
(3) 单击 Add Site 按钮。
(4) 输入
Android 更新站点的位置:https://dl-ssl.google.com/
android/eclipse/。
(5) 现在,该
Android 站点应该出现在 Available Software 视图中。
选中该站点旁边 的复选框,然后单击 Install。
如果出现错误信息,原因可能是 Eclipse 的版本不 对。
(6) 单击 Finish 开始下载安装过程。
(7) 安装完成后,重新启动 Eclipse。
(8) Eclipse 启动后可能出现几条错误信息,因为此时需要告诉你
Android SDK 位于 何处。
选择 WindowgtPreferencesgtAndroid,然后输入你在前面记下的 SDK 安装 目录。
单击 OK 按钮。
2.3 创建基于 Google APIs 的 AVD 在 Eclipse 中打开 AVD 管理界面,点击“new”按钮,在“Create new AVD”对话框的Name 处填写 AVD 的名字 GM,在 Target 处选择“Google APIs Google Inc. – API Level8”,如图 2.1 所示,点击“Create AVD”按钮完成创建。
图 2.1 创建 AVD 62.4 获取 Google Map API2.4.1 安装 Google Map API 开发基于谷歌地图的应用和普通的
Android 应用差不多都要使用它提供给我们的类库,所不同的是 Google Map 的类库不是
Android 平台的基本类库,而是 Google API 的一部分,所以建立项目时,SDK 要选择 Google APIs 选项。
2.4.2 获得 Google Map API Key 在正式使用 Google Map API 前,必须先生成 Google Map API KEY。
1.找到 debug.keystore 文件 在 Eclipse 工具下,选择 windowsPreferenceAndroidBuild其中 Defaultdebugkeystore 的值便是 debug.keystore 的路径。
2.取得 debug.keystore 的 MD5 值 首先 cmd 命令行进入 debug.keystore 文件所在的路径,执行命令:keytool -list-keystore debug.keystore,默认的密码是:
android,即可取得 MD5 值了,如图 2.2 所示。
图 2.2 获得 MD53.申请
Android Map 的 API Key 打开浏览器,输入网址:http://code.google.com/
android/maps-api-signup.html,填入刚刚获得的的认证指纹MD5即可获得 API Key 了,结果显示如图 2.3 所示。
7图 2.3 获得 API 8三、设计思路3.1 通过经纬度定位的设计思路 本功能实现的目标是:在两个 EditText 对话框中分别输入经度和纬度之后,点击相应的 Button 按钮,在屏幕中的地图中会显示出所定位的位置,并在此位置上做出标记。
首先要引用 com.google.
android.maps 包来实现一个地图浏览程序,创建一个 MapView对象来显示地图。
通过 MapController 对象来设置地图显示的地点以及放大的倍数,要定位地点需要构建一个 GeoPoint 对象来表示地点的经度和纬度,然后使用 animateTo 方法将地图定位到指定的 GeoPoint 对象上,再新建一个 Overlay 对象并在上面标注一些图标文字信息。
3.2 通过地名定位的设计思路 本功能的实现目标是:在一个 EditText 里输入一个地名,点击 Button,在 MapView 里便会显示出该地。
实际上,由于在 Google Map 中必须获得经纬度才能定位,故本定位方法不过是前一种定位方法的加强版,即先通过地名获得该地的经纬度,再通过经纬度进行定位。
由此可知,本设计的核心内容,便是如何通过地名获得该地的经纬度。
本来此问题应该很好解决,因为 Google 提供了一个用于实现该功能的 Geocoder 类,只要使用该类生成一个对象,并使用 getFromLocationName方法,只需几句代码便可轻松将地名转换为相应的经纬度,我们手中的
android 开发教材和网络上能够搜索到的绝大部分资料中使用的都是该方法,如下:Geocoder geocodernew GeocoderthisListltAddressgt listgeoCoder.getFromLocationNameAddress1 //Address是输入的地址信息iflstAddress.isEmpty Address addresslist.get0 double latitudeaddress.getLatitude1E6 double longitudeadress.getLongitude1E6 GeoPoint geopointnew GeoPointintlatitudeintlongitu.