Google Maps Android API V2使用及问题解决
2013-11-22 16:59
567 查看
说明
因为Google Maps的API版本更新,之前的一些教程都是关于旧版本V1的,虽然Google说继续提供服务,但是不再提供API Key的申请。而新的V2版本貌似改动还挺大。也没搜到国内有什么系统介绍的博客文章之类的(书肯定是来不及那么新了)。
背景
一些相关的链接:
Google Maps Android API V1的介绍:
https://developers.google.com/maps/documentation/android/v1/mapkey?hl=zh-CN
Google Maps Android API v2的初步介绍:
https://developers.google.com/maps/documentation/android/
Introduction
https://developers.google.com/maps/documentation/android/intro![](http://blog.csdn.net/sbisyju/article/details/file:/C:\Documents and Settings\Administrator\Application Data\Tencent\Users\273235736\QQ\WinTemp\RichOle\YPPH_PYSCIN`9T%699A`_UH.jpg)
Getting Started
(本部分参考https://developers.google.com/maps/documentation/android/start)1.首先安装Google Play services SDK
Google Maps Android API是作为这个SDK的一部分发行的。
这个安装是通过Android SDK Manager进行,配置好之后的Eclipse上面应该有Android SDK Manager的图标,一般的SDK版本安装和更新都在这里进行。
安装和更新Extras下的Google Play services即可。
2.获取API key
获取Maps API key需要两样东西:应用的signing certificate和它的package name。
获取这个key之后,把它加在应用程序的AndroidManifest.xml文件里即可。
为应用获取一个key还是需要好几个步骤的,下面详细说明:
获取数字证书(digital certificate)信息
数字证书有Debug和Release两种,下面主要说Debug的。要获取一个叫做SHA-1 fingerprint的东西,作为数字证书的一个简短代表。
这个指纹(fingerprint)是通过一个哈希算法得到的字符串,为了得到你的证书的SHA-1 fingerprint,首先要找到你的debug keystore 文件,文件名叫debug.keystore。
默认情况下它和虚拟机AVD存放在一起,win7下的路径是:C:\Users\your_user_name\.android\,也可以通过Eclipse中的Windows > Prefs > Android > Build来查看这个路径。
其实在此对话框中就可以得到想要的MD5 fingerprint与SHA1 fingerprint.
![](http://blog.csdn.net/sbisyju/article/details/file:/C:\Documents and Settings\Administrator\Application Data\Tencent\Users\273235736\QQ\WinTemp\RichOle\YPPH_PYSCIN`9T%699A`_UH.jpg)
![](http://blog.csdn.net/sbisyju/article/details/file:/C:\Documents and Settings\Administrator\Application Data\Tencent\Users\273235736\QQ\WinTemp\RichOle\YPPH_PYSCIN`9T%699A`_UH.jpg)
![](http://blog.csdn.net/sbisyju/article/details/file:/C:\Documents and Settings\Administrator\Application Data\Tencent\Users\273235736\QQ\WinTemp\RichOle\YPPH_PYSCIN`9T%699A`_UH.jpg)
![](http://blog.csdn.net/sbisyju/article/details/file:/C:\Documents and Settings\Administrator\Application Data\Tencent\Users\273235736\QQ\WinTemp\RichOle\YPPH_PYSCIN`9T%699A`_UH.jpg)
![](http://blog.csdn.net/sbisyju/article/details/file:/C:\Documents and Settings\Administrator\Application Data\Tencent\Users\273235736\QQ\WinTemp\RichOle\YPPH_PYSCIN`9T%699A`_UH.jpg)
![](http://blog.csdn.net/sbisyju/article/details/file:/C:\Documents and Settings\Administrator\Application Data\Tencent\Users\273235736\QQ\WinTemp\RichOle\YPPH_PYSCIN`9T%699A`_UH.jpg)
![](http://blog.csdn.net/sbisyju/article/details/file:/C:\Documents and Settings\Administrator\Application Data\Tencent\Users\273235736\QQ\WinTemp\RichOle\YPPH_PYSCIN`9T%699A`_UH.jpg)
![](http://blog.csdn.net/sbisyju/article/details/file:/C:\Documents and Settings\Administrator\Application Data\Tencent\Users\273235736\QQ\WinTemp\RichOle\YPPH_PYSCIN`9T%699A`_UH.jpg)
![](http://blog.csdn.net/sbisyju/article/details/file:/C:\Documents and Settings\Administrator\Application Data\Tencent\Users\273235736\QQ\WinTemp\RichOle\3{697B9_HC8Q_[49JMYI`71.jpg)
![](http://blog.csdn.net/sbisyju/article/details/file:/C:\Documents and Settings\Administrator\Application Data\Tencent\Users\273235736\QQ\WinTemp\RichOle\3{697B9_HC8Q_[49JMYI`71.jpg)
![](http://blog.csdn.net/sbisyju/article/details/file:/C:\Documents and Settings\Administrator\Application Data\Tencent\Users\273235736\QQ\WinTemp\RichOle\3{697B9_HC8Q_[49JMYI`71.jpg)
![](http://img.my.csdn.net/uploads/201311/22/1385090938_4897.jpg)
然后,在cmd命令行里运行下列命令:
keytool -list -v -keystore "C:\Users\your_user_name\.android\debug.keystore" -alias androiddebugkey -storepass android -keypass android
就显示一大堆东西,其中就有证书指纹:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202001/27/3e0482d7b0a1e895cb0a6cb74db7accd.png)
SHA1那一行就包含了证书的SHA-1 fingerprint,是二十段用冒号割开的数字段,每段是两个十六进制的数。
在Google APIs Console上创建API Project
在Google APIs Console上创建项目,并且注册Maps API。首先,去这个网址:https://code.google.com/apis/console/
用Gmail的账户登录,如果是第一次的话,需要创建项目,默认情况会创建一个叫做API Project的项目。
点击左边的APIs,找到Google Maps Android API v2,然后把它设置成on,需要接受一些服务条款。
获得API Key
在左边的导航条中选择registered apps ----->register app 进入下面对话框![](http://img.my.csdn.net/uploads/201311/22/1385091478_9850.jpg)
在上面对话框中输入包名和SHA-1 fingerprint后,再点击register就OK了,最后生成的APP KEY 如下:
![](http://img.my.csdn.net/uploads/201311/22/1385091705_5757.jpg)
3.把API Key加入应用程序
首先,建立虚拟设备AVD和应用程序。
关于AVD,官方文档并没详细介绍,我后面会有说明。
建立好应用程序,注意包名应该和申请key时候的包名一致。
之后修改AndroidManifest.xml文件:
3.1.在<application>元素中加入子标签
<meta-data
android:name="com.google.android.maps.v2.API_KEY"
android:value="your_api_key"/>
其中your_api_key置换成自己申请的API Key。
3.2.加入一些许可信息
<permission
android:name="com.example.mapdemo.permission.MAPS_RECEIVE"
android:protectionLevel="signature"/>
<uses-permission android:name="com.example.mapdemo.permission.MAPS_RECEIVE"/>
其中com.example.mapdemo换成自己的包名。
4. AndroidManifest.xml中的其他具体设置
许可设置
<uses-permission> 作为<manifest> 的子元素,需要加入下列一些:
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES"/>
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
OpenGL ES V2特性支持
同样也是作为<manifest> 的子元素。
<uses-feature
android:glEsVersion="0x00020000"
android:required="true"/>
5.加上地图
首先布局文件:
<?xml version="1.0" encoding="utf-8"?>
<fragment xmlns: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:
MainActivity.java
![](https://oscdn.geek-share.com/Uploads/Images/Content/2015/2015030189/81178cc93a2a3bb5048d90d76e7ec935.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201603/69c5a8ac3fa60e0848d784a6dd461da6.gif)
package com.example.mapdemo; import android.app.Activity; import android.os.Bundle; public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); } }
![](https://oscdn.geek-share.com/Uploads/Images/Content/201603/69c5a8ac3fa60e0848d784a6dd461da6.gif)
![](http://blog.csdn.net/sbisyju/article/details/file:/C:\Documents and Settings\Administrator\Application Data\Tencent\Users\273235736\QQ\WinTemp\RichOle\YPPH_PYSCIN`9T%699A`_UH.jpg)
相关文章推荐
- Google Maps Android API V2的使用及问题解决
- Google Maps Android API V2使用及问题解决
- Google Maps Android API V2使用及问题解决
- Google Maps Android API V2使用及问题解决
- Google Maps Android API V2使用及问题解决
- Google Maps Android API V2使用及问题解决
- Google Maps Android API V2使用及问题解决
- 转贴自圣骑士wind:Google Maps Android API V2的使用及问题解决
- Google Maps Android API V2使用及问题解决【转】
- 【转】Google Maps Android API V2的使用及问题解决
- Google Maps Android API V2使用及问题解决
- Google Maps Android API V2使用及问题解决
- Google Maps Android API V2使用及问题解决
- Google Maps Android API V2使用及问题解决
- Google Maps Android API V2使用及问题解决
- Google Maps Android API V2使用及问题解决
- 【转】Google Maps Android API V2的使用及问题解决
- Google Maps Android API V2的使用及问题解决
- Google Maps Android API V2使用及问题解决
- google地图开发(Google Maps Android API V2 的相关问题解决)