2

以下は、Android 用のマップ キーを生成するための手順です。

1-) 次のコマンドを実行します。

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

このコマンドの出力は次のようになります。

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-) SHA1 を取得したら、それをコピーして、次のリンクを開きます: https://code.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私のプロジェクトの単一のパッケージです。

ここに画像の説明を入力

4-) 最後に、生成されたマップ API キーをコピーします。

ここに画像の説明を入力

5-) そして、レイアウトの 1 つに貼り付けます。

<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-) 対応するアクティビティからマップをロードします。

7-) これは私の manifest.xml ファイルです:

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

問題は、地図情報がなく、灰色の領域しか表示されないことです。

これは、プロジェクトを実行しようとしたときに発生する例外です:

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)

私はよく読んでいますが、これは Map API キーの問題だと思いますが、何が間違っているのかわかりません。

私が試してうまくいかなかったこと:

  1. debug.keystore を削除して、もう一度生成します。
  2. エミュレーターではなく、実際のデバイスで実行しようとしました。
  3. マップ API キーを再生成し、数時間待って、動作するまで時間がかかるかどうかを確認します。
4

2 に答える 2

4

わかりません。コンソールから取得するキーを含むすべての設定でGoogle Map API V2MapViewを使用していますが、Google Map API V1オブジェクトであるオブジェクトを使用しています。

アプリケーションを作成している minSDK に応じて、ライブラリでMapFragmentまたはSupportMapFragmentオブジェクトを使用する必要があります。android-support-v4

これは、Google Map API V2 をアプリケーションに追加する方法について書いたブログ投稿です。便利だと思います。

Google マップ API V2

于 2013-03-13T23:24:09.900 に答える
1

私は少し検索して、この質問とこの答えを見つけました:

署名されたAPIキーを使用する場合、アプリがAndroidマーケットからインストールされている場合にのみMapViewが表示されます。そのため、Eclipse(実行、デバッグなど)またはコマンドライン(adb install)からアプリをインストールしても、MapViewは表示されません。アプリがマーケットに登場したら、ダウンロードするとMapViewが表示されますのでご安心ください。

これは少し奇妙ですが、お役に立てば幸いです。

于 2013-03-13T23:17:24.197 に答える