zoukankan      html  css  js  c++  java
  • 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。具体大家可以自行搜索下载。

  • 相关阅读:
    第 8 章 容器网络
    第 8 章 容器网络
    第 8 章 容器网络
    第 8 章 容器网络
    第 8 章 容器网络
    第 8 章 容器网络
    第 8 章 容器网络
    第 8 章 容器网络
    第 8 章 容器网络
    第 8 章 容器网络
  • 原文地址:https://www.cnblogs.com/Jam01/p/2913241.html
Copyright © 2011-2022 走看看