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

[java]  view plain copy
  1.     

 

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 plain copy
  1. <meta-data  android:name="com.google.android.maps.v2.API_KEY"  
  2.   
  3.    android:value="your_api_Key"/>  

 

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

        3.2.加入一些许可信息
[html]  view plain copy
  1. <permission  
  2.          android:name="com.bupt.mapDemo.permission.MAPS_RECEIVE"  
  3.          android:protectionLevel="signature"/>  
  4. lt;uses-permission android:name = "com.bupt.mapDemo.permission.MAPS_RECEIVE"/>  
 
 

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

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

[html]  view plain copy
  1.  <uses-permission android:name="com.bupt.mapDemo.permission.MAPS_RECEIVE"/>  
  2. <uses-permission android:name="android.permission.INTERNET"/>  
  3. <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>  
  4. <uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES"/>  
  5. <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>  
  6. <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>  
  7. <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>  
  8. <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>  
3.3 OpenGL ES V2特性支持

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

[html]  view plain copy
  1. <uses-feature  android:glEsVersion="0x00020000"  android:required="true"/>  

4.加上地图

在布局文件中加入地图:

[html]  view plain copy
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <fragment xmlns:android="http://schemas.android.com/apk/res/android"  
  3.   android:id="@+id/map"  
  4.   android:layout_width="match_parent"  
  5.   android:layout_height="match_parent"  
  6.   class="com.google.android.gms.maps.SupportMapFragment"/>  

在MainActivity.java中加入

[java]  view plain copy
  1. package com.example.mapdemo;   
  2.    
  3. import android.app.Activity;   
  4. import android.os.Bundle;   
  5.    
  6. public class MainActivity extends FragmentActivity {   
  7.    
  8.     @Override   
  9.     protected void onCreate(Bundle savedInstanceState) {   
  10.         super.onCreate(savedInstanceState);   
  11.         setContentView(R.layout.main);   
  12.     }   
  13. }  

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安装后显示
<code style="padding: 0px; border-width: 0px; background-color: rgb(238, 238, 238); margin: 0px; font-family: Consolas, Menlo, Monaco, 'Lucida Console', 'Liberation Mono', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Courier New', monospace, serif; vertical-align: baseline;"><span style="font-size: 12px;"><span class="typ" style="color: rgb(43, 145, 175); padding: 0px; border-width: 0px; background-color: transparent; margin: 0px; vertical-align: baseline;">Google</span><span class="pln" style="color: rgb(0, 0, 0); padding: 0px; border-width: 0px; background-color: transparent; margin: 0px; vertical-align: baseline;"> </span><span class="typ" style="color: rgb(43, 145, 175); padding: 0px; border-width: 0px; background-color: transparent; margin: 0px; vertical-align: baseline;">Play</span><span class="pln" style="color: rgb(0, 0, 0); padding: 0px; border-width: 0px; background-color: transparent; margin: 0px; vertical-align: baseline;"> services </span><span class="kwd" style="padding: 0px; border-width: 0px; background-color: transparent; margin: 0px; vertical-align: baseline;">out</span><span class="pln" style="color: rgb(0, 0, 0); padding: 0px; border-width: 0px; background-color: transparent; margin: 0px; vertical-align: baseline;"> of date</span><span class="pun" style="color: rgb(0, 0, 0); padding: 0px; border-width: 0px; background-color: transparent; margin: 0px; vertical-align: baseline;">.</span><span class="pln" style="color: rgb(0, 0, 0); padding: 0px; border-width: 0px; background-color: transparent; margin: 0px; vertical-align: baseline;"> </span><span class="typ" style="color: rgb(43, 145, 175); padding: 0px; border-width: 0px; background-color: transparent; margin: 0px; vertical-align: baseline;">Requires</span><span class="pln" style="color: rgb(0, 0, 0); padding: 0px; border-width: 0px; background-color: transparent; margin: 0px; vertical-align: baseline;"> </span><span class="lit" style="padding: 0px; border-width: 0px; background-color: transparent; margin: 0px; vertical-align: baseline;">3025100</span><span class="pln" style="color: rgb(0, 0, 0); padding: 0px; border-width: 0px; background-color: transparent; margin: 0px; vertical-align: baseline;"> but found </span><span class="lit" style="padding: 0px; border-width: 0px; background-color: transparent; margin: 0px; vertical-align: baseline;">2012110</span></span></code>

      解决方法:下载最新版本的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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值