您的位置:首页 > 移动开发 > Android开发

【android】【google map api v2】google 地图 api v2

2013-02-05 17:32 615 查看
今天看了《GoogleAndroid游戏开发》,看到第五章的时候,发现有实现google地图的示例,于是想copy下看看。才发现,书上的示例是对于googlemapapiversion1版本,其api已于去年年度升级至version2了。

先贴上官方的网站,大家可以细看:https://developers.google.com/maps/documentation/android/?hl=zh-CN

v2与v1变化还蛮大的,现在大致发现有三大区别:

1、APIKey的获取方式不同

1)v1是拿MD5编码去登陆网站http://code.google.com/android/maps-api-signup.html申请由Google签署的key

2)v2则是拿SHA-1fingerprint登录网站https://code.google.com/apis/console/申请APIKey(具体怎么拿,会再后面给出)

2、显示组件不同

Mapsarenowencapsulatedinthe
MapFragment
class,anextensionofAndroid's
Fragment
class.Nowyoucanaddamapasapieceofalarger
Activity
.Witha
MapFragment
object,youcanshowamapbyitselfonsmallerscreens,suchasmobilephones,orasapartofamorecomplexUIonlarger-screendevices,suchastablets.Becausemapsareencapsulatedinthe
MapFragment
class,youcanimplementthembyextendingtheAndroidstandard
Activity
class,ratherthanextendingthe
MapActivity
usedinversion1.
1)v1中是采用MapView+MapActivity来实现地图的展示

2)v2是采用MapFragment来实现

3、2D+3D视图

v2中增加了2D的不同方位展示,以及3D效果展示,更加地服务于大众了,尤其是对于像我这样东南西北分不清楚的人。

现在贴上使用googlemapapiv2的步骤:

1、安装GooglePlayservicesSDK:

如果是使用Eclipse开发工具,则可以点击窗口—AndroidSDKManage–Extras–GooglePlayservice,installpackages...安装。如下图:





2、获取APIKey

1)先获取SHA-1fingerprint:

注意,这里的数字证书是有两种的,一种是debug,还有release。前者只能用于测试;后者才可以用于实际产品。

Debugcertificate:TheAndroidSDKtoolsgeneratethiscertificateautomaticallywhenyoudoa"debug"buildfromthecommandline,orwhenyoubuildandrunaprojectfromEclipsewithoutexportingitasareleasedapplication.Thecertificateisonlyforusewithanapplicationthatyou'retesting;youcan'tpublishanappthat'ssignedwithadebugcertificate.ThedebugcertificateisdescribedinmoredetailinthesectionSigninginDebugModeintheAndroidDeveloperDocumentation.YoucangenerateanAPIkeyfromthiscertificate,butonlyusethekeyfortesting,neverforproduction.Releasecertificate:TheAndroidSDKtoolsgeneratethiscertificatewhenyoudoa"release"buildwitheither
ant
programorEclipse.Youcanalsogeneratethiscertificateusingthe
keytool
program.Thiscertificatecanbeusedwithanappyoureleasetotheworld.Onceyouhavethecorrectcertificateforyourneeds,youcandisplayitsSHA-1fingerprintusingthe
keytool
program.
现在就是用debug.keystore来获取数字证书。在命令行中输入命令:keytool-list-v-keystore"C:\Users\your_user_name\.android\debug.keystore"-aliasandroiddebugkey-storepassandroid-keypassandroid

得到SHA1。如下图:





至于release版本的数字证书:

1)使用keytool生成keystore.基本命令如下:keytool–genkey–aliasdemo.keystore–keyalgRSA–validity40000–keystoredemo.keystore

说明:-genkey:产生密钥

-aliasdemo.keystore:别名demo.keystore

-keyalgRSA:使用RSA算法对签名加密

-validity40000:有效期限40000天

-keystoredemo.keystore





2)获取SHA1的方式同debug是类似的,区别在于keystore密码不是android,而是你在生成keystore时设置的密码。

3)画外音:生成release版本的APK,是另外的一个议题了。

2)登录网站获取APIKey

去这个网址:https://code.google.com/apis/console/用Gmail的账户登录,如果是第一次的话,需要创建项目,默认情况会创建一个叫做APIProject的项目。点击左边的Services,会在中间看到很多的APIs和Services,找到GoogleMapsAndroidAPIv2,然后把它设置成on,需要接受一些服务条款。在左边的导航条中选择APIAccess。在出来的页面中选择CreateNewAndroidKey...就可以生成key了:



如上截图给出的APIKey就是我们所需要的。

注意:在申请APIKey是会要求写上包名,这里请填上你需要测试的工程的包名(例如,我的包名是com.amanda.activity)。

3、创建工程

这里就只贴上一些代码了。如果需要查看具体是什么意思,请参考链接:https://developers.google.com/maps/documentation/android/start?hl=zh-CN

AndroidManifest.xml

<?xmlversion="1.0"encoding="utf-8"?> <manifestxmlns:android="http://schemas.android.com/apk/res/android" package="com.amanda.activity" android:versionCode="1" android:versionName="1.0"> <uses-sdk android:minSdkVersion="15" android:targetSdkVersion="15"/> <application android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme"> <activity android:name="com.amanda.activity.MainActivity" android:label="@string/app_name"> <intent-filter> <actionandroid:name="android.intent.action.MAIN"/> <categoryandroid:name="android.intent.category.LAUNCHER"/> </intent-filter> </activity> <meta-data android:name="com.google.android.maps.v2.API_KEY" android:value="AIzaSyAT6jZbQOgdX8JR6zvylp1o_SX7gxN--yM"/> </application> <permission android:name="com.amanda.activity.permission.MAPS_RECEIVE" android:protectionLevel="signature"/> <uses-permissionandroid:name="com.amanda.activity.permission.MAPS_RECEIVE"/> <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"/> <uses-feature android:glEsVersion="0x00020000" android:required="true"/> </manifest>
布局文件activity_main.xml:

<?xmlversion="1.0"encoding="utf-8"?>
<fragmentxmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/map"
android:layout_width="match_parent"
android:layout_height="match_parent"
class="com.google.android.gms.maps.MapFragment"/>
主程序MainActivity.java:

packagecom.amanda.activity;

importandroid.os.Bundle;
importandroid.app.Activity;
importandroid.view.Menu;

publicclassMainActivityextendsActivity{

@Override
protectedvoidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}

@Override
publicbooleanonCreateOptionsMenu(Menumenu){
//Inflatethemenu;thisaddsitemstotheactionbarifitispresent.
getMenuInflater().inflate(R.menu.activity_main,menu);
returntrue;
}

}

4、导入GooglePlayservices类库:

1)在Eclipse里面选择:File>Import>Android>ExistingAndroidCodeIntoWorkspace然后点击Next.

  之后Browse...,找到路径下的<android-sdk-folder>/extras/google/google_play_services/libproject/google-play-services_lib,然后选择Finish。
2)添加对这个库的引用:
在自己的项目上右键,选Properties,左边选Android,然后在下面的Library里面Add刚才的google-play-services_lib。



基本就是以上内容了。

运行时,出现了一些问题,现在也一并贴上。

问题一:没有导入google-play-services_lib类





出现以上问题,请见上述步骤4.

问题二:提示没有googleplay服务

郁闷的是,自己的手机是精简版的,手机上没有googleplay。在运行自己的工程时,提示“您的手机中没有googleplay服务...”。

这个解决办法是找了以下链接解决的,大家也可以看看:

http://bbs.lewaos.com/thread-65641-1-1.html

因为还没有花多少时间研究该API,只是让它跑起来了。后期再加上其他功能的。例如,3D显示,经纬度定位等等。

参考文献:

【1】GoogleMapAPI官网介绍:https://developers.google.com/maps/documentation/android/?hl=zh-CN

【2】/article/4672806.html

【3】http://bbs.lewaos.com/thread-65641-1-1.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐
章节导航