Google Maps API v2初探

     因为最近需要写涉及到Google Maps的应用,所以就大概找了一些资料,发现网上大部分教材范例都是老版本的Google Maps api v1,这一套api已经被废弃,因为无法注册v1的api key,在网上找到了一篇《Google Maps Android API V2使用及问题解决》的博客作者是圣骑士Wind (在这里不得不感谢作者),这篇博客对于本人的帮助很大。自己又重新读了官方文档,终于能在AVD上运行地图DEMO。

     正式开篇,首先,必须说明的是,假如你是新手,那么在网上找到的所以关于google maps api v1的资料已经不能再用,因为这套api已经被google废弃,也不再提供api key的注册,所以现在一般都是开发api v2或者v3,在这里说明的是v2,v2也是需要注册api key的,但注册方法略有不同,待会会说明。

Step1 你需要安装 Google Play services SDK 

         在SDK Manager的Extras项就可以找到Google Play Services的安装。

Step2 你需要为程序申请API KEY.具体的方法请参考圣骑士Wind的博文《Google Maps Android API V2使用及问题解决》,地址是http://www.cnblogs.com/mengdd/archive/2013/01/01/2841390.html,里面关于获取API KEY的部分写的非常详细,但我想可能会有许多人会像我一样非常的粗心,在开启Services服务的时候,会看错,请注意,在API CONSLE里开启服务的时候要选择Google Maps Android API v2, 而不是Google Maps API v2。

Step3 把API Key加入程序中

          AndroidManifest.xml进行修改。

          添加如下代码。

        

<meta-data

    android:name="com.google.android.maps.v2.API_KEY"

    android:value="your_api_key"/>

 把your_api_key换成你获得的api key。

 然后需要进行权限注册。同样在AndroidManifest.xml中添加代码。

<permission
          android:name="com.example.mapdemo.permission.MAPS_RECEIVE"
          android:protectionLevel="signature"/>
<uses-permission    android:name="com.example.mapdemo.permission.MAPS_RECEIVE"/>

<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"/>

 将com.example.mapdemo替换成自己的包路径,根据官方文档的说明,

android.permission.ACCESS_COARSE_LOCATION Allows the API to use WiFi or mobile cell data (or both) to determine the device's location.

android.permission.ACCESS_FINE_LOCATION Allows the API to use the Global Positioning System (GPS) to determine the device's location to within a very small area.

一个是用基站定位+网络的方式进行定位的权限,一个是用GPS进行精确定位的权限。

Step4 OpenGL ES V2的支持

因为这个版本是支持OpenGL ES V2的,所以必须AndroidManifest.xml中加入如下代码:

<uses-feature
  android:glEsVersion="0x00020000"
  android:required="true"/>

Step5 布局文件及源代码

布局文件

<?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.SupportMapFragment"/>

 然后MainActivity.java的源代码:

package com.example.googletest;

import android.os.Bundle; 
import android.support.v4.app.FragmentActivity;

public class MainActivity extends FragmentActivity{
	 @Override 
	    protected void onCreate(Bundle savedInstanceState) { 
	        super.onCreate(savedInstanceState); 
	        setContentView(R.layout.activity_main); 
	    } 
}

 Notice: 因为我自己的AVD是Android API 10手机也是Android 2.3.3的版本,所以需要Support Library来辅助(当然,Support Library也可以在SDK Manager安装),根据官方文档的说明,如若手机版本是低于API 12的,就需要Support Library。MainActivity继承FragmentActivity, 如若是高于12的,直接继承Activity即可。

需要注意的:

1、 需要添加Google Play Service类库,具体方法参考圣骑士Wind的博文。重新贴一次地址:http://www.cnblogs.com/mengdd/archive/2013/01/01/2841390.html。

2、 圣骑士Wind的博文里面提到关于AVD能否运行的问题,我可以很明确的说,可以在模拟器中运行,官方文档并没有说模拟器无法运行,而且经过实测是可以运行的,只是需要在模拟器中安装几个apk, 一个是Google Play Service的APK,一个是谷歌地图,而圣骑士Wind的博文里面提供的两个包其实是有缺漏的,他少提供一个谷歌地图的APK,所以一开始我按照他的提示搞一直程序崩溃。。。Orz。具体大家可以自行搜索下载。

原文地址:https://www.cnblogs.com/Jam01/p/2913241.html