一步步教你用Android Google Map.docx
- 文档编号:25730121
- 上传时间:2023-06-12
- 格式:DOCX
- 页数:11
- 大小:294.14KB
一步步教你用Android Google Map.docx
《一步步教你用Android Google Map.docx》由会员分享,可在线阅读,更多相关《一步步教你用Android Google Map.docx(11页珍藏版)》请在冰豆网上搜索。
一步步教你用AndroidGoogleMap
一步步教你用AndroidGoogleMap
Android操作系统平台很容易跟Google其他应用如Google地图的整合。
在Android应用中,如果能在其中加入Google地图,则会为你的应用增添强大的功能,目前不少LBS应用(基于地理位置的应用)就是充分将移动跟地图结合起来。
在本文中,将一步步教你如何将Google地图结合到你的Android应用中。
第一步:
安装GoogleMapAPI
在默认情况下,在安装GoogleAndroidSDK时,是不需要必须安装GoogleMapAPI的。
但要做Map应用的话,就必须安装GoogleMapAPI。
我们可以通过启动AndroidSDKandAVDManager这个SDK管理器去下载安装GoogleMapAPI。
在启动SDK管理器后,选择“InstalledOptions”,去查看你已经安装了哪些SDK和是否已经安装GoogleMapAPI,如果尚未安装的话,可以在“AvailablePackages”中查找并下载安装,如下图所示:
▲
第二步:
建立Eclipse工程
当下载完GoogleAPI后,就可以开始新建Eclipse工程了,我们把这个工程命名为
AndroidGoogleMapsProject,如下图,注意必须在BuildTarget中勾选GoogleAPI,
而Applicationname和Packagename的填写如上图所示。
▲
第三步:
获得GoogleMapAPIKey
在正式使用GoogleMapAPI前,必须先生成GoogleMapAPIKEY。
具体的详细步骤请参考
(
首先,我们要使用Java下的keytool工具,产生MD5密纹,这个是跟你的证书所关联的,在使用GoogleMapAPI时进行对证书校验。
Keytool这个文件一般位于%JAVA_HOME%/bin目录下,如果是Linux系统,则位于
$JAVA_HOME/bin下的,比如windows下在C:
\programs\Java\jdk1.6.0_18\bin下。
在开发Android程序时,一般是在debug调试模式下开发的,这时SDK的buildtools会自动使用debug模式下的证书对应用进行签名的,为了产生debug模式下证书的MD5密纹,我们必须找到debug模式下的keystore密钥库,在不同的操作系统中,keystore位于如下位置:
·WindowsVista:
C:
\Users\\.android\debug.keystore
·WindowsXP:
C:
\Documents and Settings\\.android\debug.keystore
·OSX and Linux:
~/.android/debug.keystore
接下来,我们开始使用keytool工具产生md5密纹,命令行下输入如下语句:
%JAVA_HOME%/bin/keytool -list -aliasandroiddebugkey -keystoredebug.keystore -storepassandroid -keypassandroid
现在我们就产生了debug模式下的MD5密纹了,要注意的是,你必须重新为生产环境下的应用重新生成一次MD5密纹,因为如果在不同的AndroidSDK或者不同的开发环境下,MD5密纹是不同的,否则换了环境的话GoogleMap将不会工作。
产生的MD5密纹的输出如下面:
androiddebugkey,Apr 2, 2010,PrivateKeyEntry,
Certificatefingerprint(MD5):
72:
BF:
25:
C1:
AF:
4C:
C1:
2F:
34:
D9:
B1:
90:
35:
XX:
XX:
XX
接下来,我们要到GoogleMapAPI的主页去申请一个Map的key了,可以访问
fingerprint一栏中输入刚才生成的MD5密纹,如下图:
输入后,点GenerateAPIKey,之后会为我们产生GoogleMapAPI了,如下图,这个API是我们在程序中可以使用的。
其中还给出了如何在android中使用该API的方法。
第四步:
开始创建AndroidGoogleMap应用
其实,编写AndroidMap应用并不复杂,只需要继承MapActivity类就可以了。
MapView这个类功能是从Google Map地图中获得数据并且展示地图。
MapActivity的主要功能有:
1)管理Activity的生命周期
2)为MapView类建立和撤消相关的服务。
在继承了MapActivity类后,我们要实现其中的isRouteDisplayed方法,这个方法其实是用来表示我们是否显示一些路线的信息,这个通常用在地图的飞行模式时才使用,这里我们不提供任何信息仅是返回false即可。
在我们的activity中,我们将引用到MapView,它是在界面xml中定义的。
同时我们也用到setBuiltInZoomControls方法设置地图允许缩放模式。
初步的代码是这样的:
packagecom.javacodegeeks.android.googlemaps;
importandroid.os.Bundle;
importcom.google.android.maps.MapActivity;
importcom.google.android.maps.MapView;
public classGMapsActivityextendsMapActivity{
private MapViewmapView;
@Override
public voidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
mapView = (MapView)findViewById(R.id.map_view);
mapView.setBuiltInZoomControls(true);
}
@Override
protected boolean isRouteDisplayed(){
return false;
}
}
而相应的界面xml文件如下:
xmlversion="1.0" encoding="utf-8"?
>
xmlns: android=" android: orientation="vertical" android: layout_width="fill_parent" android: layout_height="fill_parent"> xmlns: android=" android: id="@+id/map_view" android: layout_width="fill_parent" android: layout_height="fill_parent" android: clickable="true" android: enabled="true" android: apiKey="API-KEY-HERE" />
注意,其中要把你获得的GoogleMap的APIKEY写到MapView控件中去。
最后,记得在AndroidManifest.xml配置文件中,加上对Internet和Map的使用访问权限,其中由于GoogleMap的API是另外提供的API,因此也需要使用use-library标签进行说明,如下代码所示。
xmlversion="1.0" encoding="utf-8"?
>
android=" package="com.javacodegeeks.android.googlemaps" android: versionCode="1" android: versionName="1.0"> icon="@drawable/icon" android: label="@string/app_name"> name=".GMapsActivity" android: label="@string/app_name"> name="android.intent.action.MAIN" /> name="android.intent.category.LAUNCHER" /> name="com.google.android.maps" /> name="android.permission.INTERNET"/> 运行程序,可以得到一个初步的地图,如下图所示: ▲ 第五步: 自定义地图的图层 接下来,我们需要为地图多增加一些自定义的功能,比如可以在地图上进行一些标注。 为了实现这样的功能,我们可以继承Overlay这个类,这个类是一个基类,提供了可以在地图上添加图层的基本功能。 而另外的选择是,我们可以继承itemzedOverlay这个类, 它提供了一种快捷的方法,可以把标记图片和相关的文本分配给特定的地理位置。 ItemizedOverlay实例可以处理每一个OverlayItem(OverlayItem可以简单理解为在地图上的每一个标记)标记的绘制、放置、单击处理、焦点控制和布局优化。 下面我们看代码: packagecom.javacodegeeks.android.googlemaps; importjava.util.ArrayList; importandroid.app.AlertDialog; importandroid.content.Context; importandroid.graphics.drawable.Drawable; importcom.google.android.maps.ItemizedOverlay; importcom.google.android.maps.OverlayItem; public classCustomItemizedOverlayextendsItemizedOverlay private ArrayList private Contextcontext; public CustomItemizedOverlay(DrawabledefaultMarker){ super(boundCenterBottom(defaultMarker)); } public CustomItemizedOverlay(DrawabledefaultMarker,Contextcontext){ this(defaultMarker); this.context = context; } @Override protectedOverlayItemcreateItem(int i){ returnmapOverlays.get(i); } @Override public int size(){ returnmapOverlays.size(); } @Override protected boolean onTap(int index){ OverlayItemitem = mapOverlays.get(index); AlertDialog.Builderdialog = new AlertDialog.Builder(context); dialog.setTitle(item.getTitle()); dialog.setMessage(item.getSnippet()); dialog.show(); return true; } public voidaddOverlay(OverlayItemoverlay){ mapOverlays.add(overlay); this.populate(); } } 在这个类中,需要在构造函数中使用Drawable类,这将被用作来绘制一个标记。 此外,我们使用ArrayList去保存所有的Overlayitems,而createitem和size方法则容易理解了,分别是返回每一个Overlayitem和返回目前的所有标记的数目。 而onTap方法则是在当某个标记在地图上真正标注时所触发的,比如当在触摸屏上点击时,也可以触发该事件。 在这个例子中,我们只是通过弹出对话框的方法展示给用户看。 最后,在addOverlay方法中,我们向标记数组mapOverlays中增加一个overlayitem标记,并且调用populate方法将其展示出来。 接下来我们看下如何使用上面的这个类,将代码修改如下: packagecom.javacodegeeks.android.googlemaps; importjava.util.List; importandroid.graphics.drawable.Drawable; importandroid.os.Bundle; importcom.google.android.maps.GeoPoint; importcom.google.android.maps.MapActivity; importcom.google.android.maps.MapController; importcom.google.android.maps.MapView; importcom.google.android.maps.Overlay; importcom.google.android.maps.OverlayItem; public classGMapsActivityextendsMapActivity{ private MapViewmapView; private staticfinal int latitudeE6 = 37985339; private staticfinal int longitudeE6 = 23716735; @Override public voidonCreate(BundlesavedInstanceState){ super.onCreate(savedInstanceState); setContentView(R.layout.main); mapView = (MapView)findViewById(R.id.map_view); mapView.setBuiltInZoomControls(true); List Drawabledrawable = this.getResources().getDrawable(R.drawable.icon); CustomItemizedOverlayitemizedOverlay = new CustomItemizedOverlay(drawable,this); GeoPointpoint = new GeoPoint(latitudeE6,longitudeE6); OverlayItemoverlayitem = new OverlayItem(point, "Hello", "I'minAthens,Greece! "); itemizedOverlay.addOverlay(overlayitem); mapOverlays.add(itemizedOverlay); MapControllermapController = mapView.getController(); mapController.animateTo(point); mapController.setZoom(6); } @Override protected boolean isRouteDisplayed(){ return false; } } 在上面的代码中,我们实例化了CustomItemizedOverlay类,并为其构造函数传入了Android默认的Drawable类的实例进行初始化,接下来,我们用一个预先定义好的经纬度去实例化一个GeoPoint类,GeoPoint类表示一个具体的位置。 然后再用这个geopoint类的实例去初始化OverlayItem对象的实例,并且传入一段文本,这样就产生了一个完整的地图上的标记了,最后把这个标记加入到图层中去,这是通过调用CustomItemizedOverlay类的addOverlay去实现的,最后该标记就会出现在地图上了。 最后,我们调用了MapController这个工具类去控制地图的缩放,将地图缩放到由 GeoPoint类的实例指定区域的位置(使用的是animateTo方法),并用setZoom()方法指定了放大的级别。 运行程序后,可以看到在地图上只显示了指定区域大小的地图,并且看到了标记,当你点击标记时,可以看到弹出的对话框和显示的文字。 ▲ 总结 其实Android搭配GoogleMap还能实现很多功能,比如GPS导航,结合SNS实现提供各类的LBS位置服务等,本文只是带领你初窥了Android搭配GoogleMap的强大功能,更多的还有待读者去实践发现。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 一步步教你用Android Google Map 一步步 Android