




已阅读5页,还剩6页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
【IT168技术】Android操作系统平台很容易跟Google其他应用如Google地图的整合。在Android应用中,如果能在其中加入Google地图,则会为你的应用增添强大的功能,目前不少LBS应用(基于地理位置的应用)就是充分将移动跟地图结合起来。在本文中,将一步步教你如何将Google地图结合到你的Android应用中。第一步:安装Google Map API在默认情况下,在安装Google Android SDK时,是不需要必须安装Google Map API的。但要做Map应用的话,就必须安装Google Map API。我们可以通过启动Android SDK and AVD Manager这个SDK管理器去下载安装Google Map API。在启动SDK管理器后,选择“Installed Options”,去查看你已经安装了哪些SDK和是否已经安装Google Map API,如果尚未安装的话,可以在“Available Packages”中查找并下载安装,如下图所示:第二步:建立Eclipse 工程当下载完Google API后,就可以开始新建Eclipse工程了,我们把这个工程命名为AndroidGoogleMapsProject,如下图,注意必须在Build Target中勾选Google API,而Application name和Package name的填写如上图所示。第三步:获得Google Map API Key在正式使用Google Map API前,必须先生成Google Map API KEY。具体的详细步骤请参考一文(/intl/zh-CN/android/add-ons/google-apis/mapkey.html),下面概括了其要点如下。首先,我们要使用Java下的keytool工具,产生MD5密纹,这个是跟你的证书所关联的,在使用Google Map API时进行对证书校验。Keytool这个文件一般位于%JAVA_HOME%/bin目录下,如果是Linux系统,则位于$JAVA_HOME/bin下的,比如windows下在C:programsJavajdk1.6.0_18bin下。在开发Android程序时,一般是在debug调试模式下开发的,这时SDK的build tools会自动使用debug模式下的证书对应用进行签名的,为了产生debug模式下证书的MD5密纹,我们必须找到debug模式下的keystore密钥库,在不同的操作系统中,keystore位于如下位置: Windows Vista: C:Users.androiddebug.keystore Windows XP: C:Documents and Settings.androiddebug.keystore OS X and Linux: /.android/debug.keystore接下来,我们开始使用keytool工具产生md5密纹,命令行下输入如下语句:%JAVA_HOME%/bin/keytool -list -alias androiddebugkey -keystore debug.keystore -storepass android -keypass android现在我们就产生了debug模式下的MD5密纹了,要注意的是,你必须重新为生产环境下的应用重新生成一次MD5密纹,因为如果在不同的Android SDK或者不同的开发环境下,MD5密纹是不同的,否则换了环境的话Google Map将不会工作。产生的MD5密纹的输出如下面:androiddebugkey, Apr 2, 2010, PrivateKeyEntry,Certificate fingerprint (MD5): 72:BF:25:C1:AF:4C:C1:2F:34:D9:B1:90:35:XX:XX:XX接下来,我们要到Google Map API的主页去申请一个Map的key了,可以访问/android/maps-api-signup.html页面,在其中的MD5 fingerprint一栏中输入刚才生成的MD5密纹,如下图:输入后,点Generate API Key,之后会为我们产生Google Map API了,如下图,这个API是我们在程序中可以使用的。其中还给出了如何在android中使用该API的方法。第四步:开始创建Android Google Map应用其实,编写Android Map应用并不复杂,只需要继承MapActivity类就可以了。MapView这个类功能是从GoogleMap地图中获得数据并且展示地图。MapActivity的主要功能有:1) 管理Activity的生命周期2) 为MapView类建立和撤消相关的服务。在继承了MapActivity类后,我们要实现其中的isRouteDisplayed方法,这个方法其实是用来表示我们是否显示一些路线的信息,这个通常用在地图的飞行模式时才使用,这里我们不提供任何信息仅是返回false即可。在我们的activity中,我们将引用到MapView,它是在界面xml中定义的。同时我们也用到setBuiltInZoomControls方法设置地图允许缩放模式。初步的代码是这样的:package com.javacodegeeks.android.googlemaps;import android.os.Bundle;import com.google.android.maps.MapActivity;import com.google.android.maps.MapView;public class GMapsActivity extends MapActivity private MapView mapView;Overridepublic void onCreate(Bundle savedInstanceState) super.onCreate(savedInstanceState);setContentView(R.layout.main);mapView = (MapView) findViewById(R.id.map_view); mapView.setBuiltInZoomControls(true);Overrideprotected boolean isRouteDisplayed() return false;而相应的界面xml文件如下:注意,其中要把你获得的Google Map的API KEY写到MapView控件中去。最后,记得在AndroidManifest.xml配置文件中,加上对Internet和Map的使用访问权限,其中由于Google Map的API是另外提供的API,因此也需要使用use-library标签进行说明,如下代码所示。 运行程序,可以得到一个初步的地图,如下图所示:第五步:自定义地图的图层接下来,我们需要为地图多增加一些自定义的功能,比如可以在地图上进行一些标注。为了实现这样的功能,我们可以继承Overlay这个类,这个类是一个基类,提供了可以在地图上添加图层的基本功能。而另外的选择是,我们可以继承itemzedOverlay这个类,它提供了一种快捷的方法,可以把标记图片和相关的文本分配给特定的地理位置。ItemizedOverlay实例可以处理每一个OverlayItem(OverlayItem可以简单理解为在地图上的每一个标记)标记的绘制、放置、单击处理、焦点控制和布局优化。下面我们看代码:package com.javacodegeeks.android.googlemaps;import java.util.ArrayList;import android.app.AlertDialog;import android.content.Context;import android.graphics.drawable.Drawable;import com.google.android.maps.ItemizedOverlay;import com.google.android.maps.OverlayItem;public class CustomItemizedOverlay extends ItemizedOverlay private ArrayList mapOverlays = new ArrayList();private Context context;public CustomItemizedOverlay(Drawable defaultMarker) super(boundCenterBottom(defaultMarker);public CustomItemizedOverlay(Drawable defaultMarker, Context context) this(defaultMarker);this.context = context;Overrideprotected OverlayItem createItem(int i) return mapOverlays.get(i);Overridepublic int size() return mapOverlays.size();Overrideprotected boolean onTap(int index) OverlayItem item = mapOverlays.get(index);AlertDialog.Builder dialog = new AlertDialog.Builder(context);dialog.setTitle(item.getTitle();dialog.setMessage(item.getSnippet();dialog.show();return true;public void addOverlay(OverlayItem overlay) mapOverlays.add(overlay);this.populate();在这个类中,需要在构造函数中使用Drawable类,这将被用作来绘制一个标记。此外,我们使用ArrayList去保存所有的Overlayitems,而createitem和size方法则容易理解了,分别是返回每一个Overlayitem和返回目前的所有标记的数目。而onTap方法则是在当某个标记在地图上真正标注时所触发的,比如当在触摸屏上点击时,也可以触发该事件。在这个例子中,我们只是通过弹出对话框的方法展示给用户看。最后,在addOverlay方法中,我们向标记数组mapOverlays中增加一个overlayitem标记,并且调用populate方法将其展示出来。接下来我们看下如何使用上面的这个类,将代码修改如下:package com.javacodegeeks.android.googlemaps;import java.util.List;import android.graphics.drawable.Drawable;import android.os.Bundle;import com.google.android.maps.GeoPoint;import com.google.android.maps.MapActivity;import com.google.android.maps.MapController;import com.google.android.maps.MapView;import com.google.android.maps.Overlay;import com.google.android.maps.OverlayItem;public class GMapsActivity extends MapActivity private MapView mapView;private static final int latitudeE6 = 37985339;private static final int longitudeE6 = 23716735;Overridepublic void onCreate(Bundle savedInstanceState) super.onCreate(savedInstanceState);setContentView(R.layout.main);mapView = (MapView) findViewById(R.id.map_view); mapView.setBuiltInZoomControls(true);List mapOverlays = mapView.getOverlays();Drawable drawable = this.getResources().getDrawable(R.drawable.icon);CustomItemizedOverlay itemizedOverlay = new CustomItemizedOverlay(drawable, this);GeoPoint point = new GeoPoint(latitudeE6, longitudeE6);OverlayItem overlayitem = new OverlayItem(point, Hello, Im in Athens, Greece!);itemizedOverlay.addOverlay(overlayitem);mapOverlays.add(itemizedOverlay);MapController mapController = mapView.getController();mapController
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025有关租房合同和购房合同的区别
- 取货确认协议
- 2025年法考专科生考试试卷及答案
- 2025年县级XR演播室虚拟主持人驱动师招聘笔试题库附答案
- 2025年人大常委会机关招聘笔试专项练习含答案
- 2025年工程师职称考试复习试卷及答案
- 自然拼读法在儿童英语启蒙教育中的实践与效果教案
- 绿色施工方案协议
- 企业邮件与通讯管理系统
- 绿化养护评估与反馈合同
- T/CSPCI 00001-2022汽油中苯胺类化合物的分离和测定固相萃取/气相色谱-质谱法
- odm框架合同协议书
- 冻品供货合同协议书
- 服装代工保密协议书
- 《城市更新的》课件
- 2022水环式机械真空泵选型计算手册
- 2025-2030中国辣椒酱行业供需趋势及投资风险研究报告
- 2025年度运输业安全生产知识竞赛试题(附答案)
- 光伏居间的合同8篇
- GB/T 45418-2025配电网通用技术导则
- 医疗风险防控培训课件
评论
0/150
提交评论