android goole map 接口

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来查看这个路径。

  然后,在cmd命令行里运行下列命令:

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

  就显示一大堆东西,其中就有证书指纹:

在Google APIs Console上创建API Project

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

  首先,去这个网址:https://code.google.com/apis/console/

  用Gmail的账户登录,如果是第一次的话,需要创建项目,默认情况会创建一个叫做API Project的项目。

  点击左边的Services,会在中间看到很多的APIs和Services,找到Google Maps Android API v2,然后把它设置成on,需要接受一些服务条款。

获得API Key

  在左边的导航条中选择API Access。

  在出来的页面中选择Create New Android Key...就可以生成key了:

  


  

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

经过搜索,这个问题已经在Stackoverflow上被讨论过了,链接:http://stackoverflow.com/questions/13691943/this-app-wont-run-unless-you-update-google-play-services-via-bazaar

  所以看来在AVD上运行的问题已经被解决了

  

  解决的方法就是在AVD上安装两个包(Google Play StoreGoogle Play services):

  vending.apk和gms.apk,(给一个网盘链接:http://pan.baidu.com/share/link?shareid=190602&uk=2701745266)(自己在豌豆荚上搜搜也行)。

  并且AVD就选择普通的API 16就行,不需要是Google APIs。我选的是Android4.1 API16.


补充说明

  因为MapFragment只在API 12及之后的版本才有,所以对于之前的版本需要使用Support Library来进行辅助。

  如果minSdkVersion设置为12以前的,就需要使用Support Library

  需要更改的地方是:布局文件中,把MapFragment改为SupportMapFragment。

  MainActivity继承自FragmentActivity而不是Activity。(需要import android.support.v4.app.FragmentActivity;)

附上完整代码 

AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.maptest"
    android:versionCode="1"
    android:versionName="1.0" >


    <uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="15" />
    
    <uses-feature
          android:glEsVersion="0x00020000"
          android:required="true"/>
    
    <permission
          android:name="com.example.maptest.permission.MAPS_RECEIVE"
          android:protectionLevel="signature"/>
     
    <uses-permission android:name="com.example.maptest.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"/>


    <application
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name=".MainActivity"
            android:label="@string/title_activity_main" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />


                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        
        <meta-data
            android:name="com.google.android.maps.v2.API_KEY"
            android:value="AIzaSyAJRV7Rd_dlxnr8FYhQN3pEBUYFkhZWWpI"/>
        
    </application>


</manifest>

package com.example.maptest;

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


public class MainActivity extends FragmentActivity 
{

    @Override
    public void onCreate(Bundle savedInstanceState) 
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }

    
}
布局文件:

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

 1.关于Key的生成:

  生成Key的时候需要用到SHA-1指纹以及应用的包名。所以换了电脑或者重新创建项目之后都要重新申请Key。

  另外这个Key也分Debug和Release两种,文中只讨论了Debug版本的Key。

  可以参见原链接,得到更详细的解答:https://developers.google.com/maps/documentation/android/start

  2.库的添加

  google_play_services这个库的添加可以解决一些找不到类的问题。

  当发生错误是ClassNotFoundException,并且是找不到com.google.android.gms这个包中的类时,请检查google_play_services库的添加。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值