由于Android内置的地图是google地图,它需要访问google服务器获取地图信息,所以首先你需要注册一个使用Google地图的API的Key,没有它Google地图不会为你提供服务。
地图API的Key是跟你程序的签名证书紧密相关的。所以你如何要申请地图API的Key,首先要明白你的签名证书文件,有关签名证书文件以及签名应用的知识请参看我前篇文章:《Android应用签名》
整个Google地图API的Key申请和使用流程如下:
- 找到你的应用程序对应的签名文件(模拟器调试的签名文件是ADT替我们产生的,所以需要去找一下;发布生产版本的是我们自己产生的证书文件,我们直接就知道这个文件是在哪里。)
- 通过keytool工具,获得证书文件的MD5码。调试签名文件的alias,storepass,keypass都是固定的,直接使用即可,生产环境的这个是我们自己配置的,我们当然自己知道了。
- 在Google站点:http://code.google.com/intl/zh-CN/android/maps-api-signup.html 输入上述产生的MD5字符串,产生我们要使用的API的Key。
- 使用地图API的Key更新com.google.android.maps.MapView的android:apiKey属性,使用这个Key。
具体步骤如下:
步骤一:找到对应的签名文件。
如同上面说的,只有模拟器调试的应用才需要这一步,生产环境证书文件是我们自己产生的,我们知道如何做。
生产环境如何产生签名文件请参看我的前一篇文章:《Android应用签名》
模拟器测试使用的证书文件可以在eclipse菜单的 Window -> Preferences -> Android –> Build 中找到,如下图:
步骤二:通过keytool工具,获得证书文件的MD5码
如果是模拟器调试证书文件,就很简单,下面就是它的演示。
E:\>keytool -list -alias androiddebugkey -keystore "C:\Users\1\.android\debug.keystore" -storepass android -keypass android
androiddebugkey, 2011-4-17, PrivateKeyEntry,
认证指纹 (MD5): 52:2A:38:E3:28:3E:0A:9C:61:B6:92:B7:3C:25:EF:61
E:\>
模拟器签名文件的 alias 固定是 androiddebugkey ,storepass 和 keypass 都是android。 所以上面命令中你只需要把第一步获得证书文件的目录替换就是你的场景。
生产环境则需要修改成你自己的 alias ,storepass 和 keypass,以及签名文件目录。
步骤三、在Google站点:http://code.google.com/intl/zh-CN/android/maps-api-signup.html 输入上述产生的MD5字符串,产生我们要使用的API的Key。
如下:
点击 Generate API Key 后,显示的信息如下:
步骤四,修改MapView
<com.google.android.maps.MapViewandroid:layout_width="fill_parent"android:layout_height="fill_parent"android:apiKey="0xu5YrgQ_w5LystSrOrOpj2aLmkZoVr6_mjE2mA"/>
其中的步骤一,二可能会根据你是模拟器测试还是生成环境不一样,步骤三,步骤四不论是那种情况,都是一样的。
参考资料
android开发中-使用MapView和MapActivity — 注册Google MAP API
http://www.android777.com/index.php/tutorial/android-view/using-the-mapview-and-mapactivity-up-google-map-api.html