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

Google Maps Android API V2开发入门1之显示地图

2013-04-22 16:41 375 查看
Google Maps Android API V2新版本在2012/12进行更新,需要注意几个事项:

   1. 只能运行在Android2.2以及以上版本设备

   2. 不能运行在模拟器中

 

1.首先安装Google Play services SDK

        1)点击Eclipse下面的Android SDK Manager配置和更新SDK版本安装和更新

         2)安装和更新Extras下的Google Play services即可

2.获取API key

         获取Maps API Key需要:应用的signing certificate(数字签名)和 package name(开发的包名)

          获取key后,将key加入到对应package name应用程序的AndroidManifest.xml文件里即可

        2.1   获取数字证书(digital
certificate)信息

         数字证书有Debug和Release两种,主要说明Debug,Release参见android developer中signing your application

         (http://developer.android.com/tools/publishing/app-signing.html)

        1)获取一个SHA-1 fingerprint数字签名,作为数字证书的一个简短代表

             这个指纹fingerprint是通过一个哈希算法得到的字符串,为了得到这个SHA1,首先找到本地的debug.keystore

            通过Eclipse中Windows>preferences>Android>Build查看debug.keystore的路径

         2)在cmd中运行命令:

        keytool -list -v -keystore "C:\Users\your_user_name\.android\debug.keystore" -alias androiddebugkey -storepass android -keypass android

           从而会显示出证书指纹相关信息: 

         

         SHA1中包含了二十段用冒号割开的数字段,每段是两个16进制的数。

         2.2  在Google APIS Console上创建API Project

         在Google APIS Console上创建项目,并注册Maps API。

        1)打开网址 :https://code.google.com/apis/console/

        2)用Gmail账号登陆,如果第一次进入需要创建项目,默认会创建一个API Project的项目。

               在左侧栏中点击services,会在右侧看到有很多APIS和Services,找到Google Maps Android API V2,把它设置成为on,需要接受一些服务条款

        3)获取API Key

              在左侧导航中选择API Access

              出来的页面中选择Create New Android Key...在空白栏处填写2.1 2)中生成的SHA-1 指纹, 分号隔开,然后是应用的 package name.然后就会生成一个Key。(按照给的示例进行说明)

             注意:生成的key是字符串形式的描述,而不是SHA1中的20个16进制的数字

 3.把API Key加入应用程序  

          首先,建立虚拟设备AVD和应用程序。

  关于AVD,官方文档并没详细介绍,我后面会有说明。

  建立好应用程序,注意包名应该和申请key时候的包名一致。

  之后修改AndroidManifest.xml文件:


      3.1.在<application>元素中加入子标签

[html] view
plaincopy

<meta-data  android:name="com.google.android.maps.v2.API_KEY"  

  

   android:value="your_api_Key"/>  

 

  其中your_api_key置换成自己申请的API Key。



        3.2.加入一些许可信息



[html] view
plaincopy

<permission  

         android:name="com.bupt.mapDemo.permission.MAPS_RECEIVE"  

         android:protectionLevel="signature"/>  

lt;uses-permission android:name = "com.bupt.mapDemo.permission.MAPS_RECEIVE"/>  



  其中com.bupt.mapDemo换成自己的包名。

<uses-permission> 作为<manifest> 的子元素,需要加入下列一些:

[html] view
plaincopy

 <uses-permission android:name="com.bupt.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"/>  

<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>  

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>  


3.3 OpenGL ES V2特性支持

同样也是作为<manifest> 的子元素。

[html] view
plaincopy

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

4.加上地图

在布局文件中加入地图:

[html] view
plaincopy

<?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中加入

[java] view
plaincopy

package com.example.mapdemo;   

   

import android.app.Activity;   

import android.os.Bundle;   

   

public class MainActivity extends FragmentActivity {   

   

    @Override   

    protected void onCreate(Bundle savedInstanceState) {   

        super.onCreate(savedInstanceState);   

        setContentView(R.layout.main);   

    }   

}  

5.遇到的问题

5.1 程序编译错误,显示找不到Google Play Services中Fragment等类信息,解决方法

       首先把Google Play services的类库加载进来:

在Eclipse里面选择:File > Import > Android > Existing Android Code Into Workspace然后点击Next.

之后Browse..., 找到路径下的<android-sdk-folder>/extras/google/google_play_services/libproject/google-play-services_lib, 然后选择Finish。

       第二步是添加对这个库的引用:

在自己的项目上右键,选Properties,左边选Android,然后在下面的Library里面Add刚才的google-play-services_lib。

之后程序能运行了

5.2 程序运行成功,但是显示This app won't run unless you update Google Play services.

      网上下载了Google Play Store和Google Play Service的apk安装后显示
Google Play services out of date. Requires 3025100 but found 2012110

      解决方法:下载最新版本的Google Play Services

5.3地图显示一片空白,只有+和-缩放按钮打印信息显示could not load map和 "Failed to find provider info for com.google.android.gsf.gservices"

解决方法:

1)权限问题

<permission android:name="com.example.trackmyexercise.permission.MAPS_RECEIVE" android:protectionLevel="signature" />

<uses-permission android:name="com.example.tackmyexercise.permission.MAPS_RECEIVE" />

是否添加,是否把其中的包名更改成为自己的包名

2)Key是否申请正确并且添加正确

我当时将key写成了SHA1中的数字因此出现这个错误,应该将api key字符串填写进去

 

 

 

 

主要参考文章:

(一)Android Google Map API V2开发(较详细,本文主要参考这篇文章,强烈推荐)

http://www.cnblogs.com/mengdd/archive/2013/01/01/2841390.html

 http://www.cnblogs.com/ljmin/archive/2013/03/18/2966346.html

http://blog.csdn.net/tonyfield/article/details/8578214

(二)倒入Android Google Map V2开发的官方示例 (写的很好,强烈推荐)

http://www.cnblogs.com/xmlspy/archive/2013/01/03/2843470.html

(三)关于Google Map Android API V2开发非常详细的资料(强烈推荐)

http://wptrafficanalyzer.in/blog/gps-and-google-map-in-android-applications-series/

(四)Google Map Android v2开发基础1-4

http://blog.csdn.net/commonslok/article/details/8662494

(五)关于5.3中的问题描述

http://stackoverflow.com/questions/14465794/blank-map-with-zoom-controls-on-using-google-maps-api-v2-fragment-map

(六)Android中使用Google Map开发可能遇到的问题

http://blog.sina.com.cn/s/blog_46726d240100zwtm.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: