生成谷歌地图键Android的 - 一步一步 [英] Generate Google Map key for android - step by step

查看:154
本文介绍了生成谷歌地图键Android的 - 一步一步的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

这些都是我下面的步骤来生成我的地图键机器人:

1)我执行以下命令:

的keytool -list -v -alias androiddebugkey -keystore〜/ .android / debug.keystore -storepass -keypass的android安卓

此命令将作为一个输出是这样的:

 别名:androiddebugkey
创建日期:2013年3月13日
条目类型:PrivateKeyEntry
证书链长:1
证书[1]:
业主:CN = Android的调试,O =的Andr​​oid,C = US
发行人:CN ​​= Android的调试,O =的Andr​​oid,C = US
编号:51401a0b
有效期从:星期三03月13日二时17分47秒美国东部时间2013至:周五3月6日1时17分47秒美国东部时间2043
证书指纹:
     MD5:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX
     SHA1:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX
     签名算法名:SHA1withRSA
     版本:3
 

2-)获得SHA1后,我把它复制,然后我打开这个链接: HTTPS://$c$c.google.com/apis/console/

我对这个功能设置:

3)之后,我产生一个新的密钥:

其中, XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX (就是上面得到的SHA1)和 edu.osu.cse5326.busstopapp <​​/ code>是单包我的项目。

4-)最后,我复制生成的地图API密钥:

5)我贴到我的布局之一:

 &LT; com.google.android.maps.MapView的xmlns:机器人=htt​​p://schemas.android.com/apk/res/android
                    机器人:ID =@ + ID / mapViewBusStopLocation
                    机器人:layout_width =FILL_PARENT
                    机器人:layout_height =FILL_PARENT
                    机器人:可点击=真
                    机器人:apiKey =the_api_key

                /&GT;
 

6-)予从相应的活动载入地图

7)这是我的manifest.xml文件:

 &LT; XML版本=1.0编码=UTF-8&GT?;
&LT;舱单的xmlns:机器人=htt​​p://schemas.android.com/apk/res/android
    包=edu.osu.cse5326.busstopapp
    安卓版code =1
    机器人:VERSIONNAME =1.0&GT;

    &LT;使用-权限的Andr​​oid:名称=android.permission.ACCESS_FINE_LOCATION/&GT;
    &LT;使用-权限的Andr​​oid:名称=android.permission.ACCESS_COARSE_LOCATION/&GT;
    &LT;使用-权限的Andr​​oid:名称=android.permission.INTERNET对/&GT;
    &LT;使用-权限的Andr​​oid:名称=android.permission.CAMERA/&GT;

    &LT;使用特征的android:NAME =android.hardware.camera/&GT;
    &LT;使用特征的android:NAME =android.hardware.camera.autofocus/&GT;

    &LT;使用-权限的Andr​​oid:名称=android.permission.ACCESS_COARSE_LOCATION/&GT;
    &LT;使用-权限的Andr​​oid:名称=android.permission.ACCESS_FINE_LOCATION/&GT;
    &LT;使用-权限的Andr​​oid:名称=android.permission.INTERNET对/&GT;
    &LT;使用-权限的Andr​​oid:名称=android.permission.ACCESS_NETWORK_STATE/&GT;

    &LT;许可
        机器人:名称=edu.osu.cse5326.permission.MAPS_RECEIVE
        安卓的ProtectionLevel =签名/&GT;

    &LT;用途特征
        机器人:glEsVersion =0x00020000
        机器人:要求=真/&GT;

    &LT;用途-SDK
        安卓的minSdkVersion =10
        机器人:targetSdkVersion =10/&GT;

    &lt;应用
        机器人:名称=edu.osu.cse5326.busstopapp.AppState
        机器人:allowBackup =真
        机器人:图标=@可绘制/ ic_launcher
        机器人:标签=@字符串/ APP_NAME
        机器人:主题=@风格/ AppTheme&GT;

        &LT;使用库机器人:名称=com.google.android.maps/&GT;

        &LT;活动
            机器人:名称=edu.osu.cse5326.busstopapp.LoginActivity
            机器人:标签=@字符串/ APP_NAME&GT;
            &LT;意向滤光器&gt;
                &lt;作用机器人:名称=android.intent.action.MAIN/&GT;

                &LT;类机器人:名称=android.intent.category.LAUNCHER/&GT;
            &所述; /意图滤光器&gt;
        &LT; /活性GT;

      许多其他活动
    &LT; /用途&gt;

&LT; /舱单&GT;
 

问题的是,我只看到了灰色地带,没有地图信息。

这是个例外,我试图运行项目时,得到:

  03-13 16:48:28.045:W / System.err的(375):IOException异常处理:26
03-13 16:48:28.045:W / System.err的(375):java.io.IOException异常:服务器返回:3
03-13 16:48:28.045:W / System.err的(375):在android_maps_conflict_avoidance.com.google.googlenav.map.BaseTileRequest.readResponseData(BaseTileRequest.java:115)
03-13 16:48:28.045:W / System.err的(375):在android_maps_conflict_avoidance.com.google.googlenav.map.MapService$MapTileRequest.readResponseData(MapService.java:1473)
03-13 16:48:28.045:W / System.err的(375):在android_maps_conflict_avoidance.com.google.googlenav.datarequest.DataRequestDispatcher.processDataRequest(DataRequestDispatcher.java:1117)
03-13 16:48:28.055:W / System.err的(375):在android_maps_conflict_avoidance.com.google.googlenav.datarequest.DataRequestDispatcher.serviceRequests(DataRequestDispatcher.java:994)
03-13 16:48:28.055:W / System.err的(375):在android_maps_conflict_avoidance.com.google.googlenav.datarequest.DataRequestDispatcher$DispatcherServer.run(DataRequestDispatcher.java:1702)
03-13 16:48:28.055:W / System.err的(375):在java.lang.Thread.run(Thread.java:1019)
03-13 16:48:28.365:W / System.err的(375):IOException异常处理:26
03-13 16:48:28.365:W / System.err的(375):java.io.IOException异常:服务器返回:3
03-13 16:48:28.365:W / System.err的(375):在android_maps_conflict_avoidance.com.google.googlenav.map.BaseTileRequest.readResponseData(BaseTileRequest.java:115)
03-13 16:48:28.375:W / System.err的(375):在android_maps_conflict_avoidance.com.google.googlenav.map.MapService$MapTileRequest.readResponseData(MapService.java:1473)
 

我一直在阅读了很多,我认为这是与地图API密钥的一个问题,但我不能找到什么,我做错了。

的资料我都试过,没有工作:

  1. 删除debug.keystore和各地再次生成。
  2. 我尝试,而不是模拟器,以一个真正的devide运行。
  3. 重新生成地图API密钥,并等待一两个小时,看看它需要时间来工作。
解决方案

我不明白,您使用的是谷歌地图API V2 在所有的设置,包括关键你得到从控制台,但使用的是图形页面对象,它是谷歌地图API V1 的对象。

您应该使用 MapFragment 或与 Android的支持 - 对 SupportMapFragment 对象V4 库,这取决于你正在编写应用程序的minSDK。

下面是一个博客帖子我写了如何将谷歌地图API V2添加到您的应用程序,我想你会发现它方便的:

谷歌地图API V2

These are the steps I am following to generate my map key for android:

1-) I execute this command:

keytool -list -v -alias androiddebugkey -keystore ~/.android/debug.keystore -storepass android -keypass android

This command will have as an output something like this:

Alias name: androiddebugkey
Creation date: Mar 13, 2013
Entry type: PrivateKeyEntry
Certificate chain length: 1
Certificate[1]:
Owner: CN=Android Debug, O=Android, C=US
Issuer: CN=Android Debug, O=Android, C=US
Serial number: 51401a0b
Valid from: Wed Mar 13 02:17:47 EDT 2013 until: Fri Mar 06 01:17:47 EST 2043
Certificate fingerprints:
     MD5:  XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX
     SHA1: XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX
     Signature algorithm name: SHA1withRSA
     Version: 3

2-) After obtaining the SHA1, I copy it and then I open this link: https://code.google.com/apis/console/

I set on this feature:

3-) After that I generate a new key:

Where XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX (is the SHA1 obtained above) and edu.osu.cse5326.busstopapp is the single package of my project.

4-) Finally, I copy the map API Key generated:

5-) And I paste into one of my layouts:

<com.google.android.maps.MapView xmlns:android="http://schemas.android.com/apk/res/android"
                    android:id="@+id/mapViewBusStopLocation"
                    android:layout_width="fill_parent"
                    android:layout_height="fill_parent"
                    android:clickable="true"
                    android:apiKey="the_api_key"

                />

6-) I load the map from the corresponding Activity.

7-) This is my manifest.xml file:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="edu.osu.cse5326.busstopapp"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.CAMERA" />

    <uses-feature android:name="android.hardware.camera" />
    <uses-feature android:name="android.hardware.camera.autofocus" />

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

    <permission
        android:name="edu.osu.cse5326.permission.MAPS_RECEIVE"
        android:protectionLevel="signature" />

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

    <uses-sdk
        android:minSdkVersion="10"
        android:targetSdkVersion="10" />

    <application
        android:name="edu.osu.cse5326.busstopapp.AppState"
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >

        <uses-library android:name="com.google.android.maps" />

        <activity
            android:name="edu.osu.cse5326.busstopapp.LoginActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

      Many other activities
    </application>

</manifest>

THE PROBLEM is that I'm only seeing the grey area, without the map information.

This are the exception I'm getting when trying to run the project:

03-13 16:48:28.045: W/System.err(375): IOException processing: 26
03-13 16:48:28.045: W/System.err(375): java.io.IOException: Server returned: 3
03-13 16:48:28.045: W/System.err(375):  at android_maps_conflict_avoidance.com.google.googlenav.map.BaseTileRequest.readResponseData(BaseTileRequest.java:115)
03-13 16:48:28.045: W/System.err(375):  at android_maps_conflict_avoidance.com.google.googlenav.map.MapService$MapTileRequest.readResponseData(MapService.java:1473)
03-13 16:48:28.045: W/System.err(375):  at android_maps_conflict_avoidance.com.google.googlenav.datarequest.DataRequestDispatcher.processDataRequest(DataRequestDispatcher.java:1117)
03-13 16:48:28.055: W/System.err(375):  at android_maps_conflict_avoidance.com.google.googlenav.datarequest.DataRequestDispatcher.serviceRequests(DataRequestDispatcher.java:994)
03-13 16:48:28.055: W/System.err(375):  at android_maps_conflict_avoidance.com.google.googlenav.datarequest.DataRequestDispatcher$DispatcherServer.run(DataRequestDispatcher.java:1702)
03-13 16:48:28.055: W/System.err(375):  at java.lang.Thread.run(Thread.java:1019)
03-13 16:48:28.365: W/System.err(375): IOException processing: 26
03-13 16:48:28.365: W/System.err(375): java.io.IOException: Server returned: 3
03-13 16:48:28.365: W/System.err(375):  at android_maps_conflict_avoidance.com.google.googlenav.map.BaseTileRequest.readResponseData(BaseTileRequest.java:115)
03-13 16:48:28.375: W/System.err(375):  at android_maps_conflict_avoidance.com.google.googlenav.map.MapService$MapTileRequest.readResponseData(MapService.java:1473)

I have been reading a lot and I think this is a problem with the Map API Key, but I can't find what I am doing wrong.

Things I have tried and didn't work:

  1. Delete the debug.keystore and generate all over again.
  2. I have try to run on a real devide, instead of the emulator.
  3. Regenerate the map api key and wait a couple of hours to see if it takes time to work.

解决方案

I don't get it, you are using the Google Map API V2 in all of your settings including the key you are getting from the console, but you are using the MapView object which is a Google Map API V1 object.

You should use the MapFragment or the SupportMapFragment object with the android-support-v4 library, depending on the minSDK you are writing your application for.

Here is a blog post I wrote on how to add a Google Map API V2 to your application, I think you will find it handy:

Google Map API V2

这篇关于生成谷歌地图键Android的 - 一步一步的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆