24

Google コンソールに登録した APIkey を確認して再確認しましたが、まだ次のエラーが表示されます。

12-05 16:31:12.940: E/Google Maps Android API(12334): Failed to load map.  Could not contact Google servers.

私が見ているのは、拡大/縮小ボタンとMapViewの背景ですが、地図はありません???!!!

何か案は???

答え

私の問題を解決したことは、以下の受け入れられた回答のコメントに記載されているため、ここに投稿します。

READ_GSERVICES許可でした。何らかの理由で、それらを使用する際に開発者サイトで許可について言及されていませんでした。

4

10 に答える 10

48

Android で Google Maps API v2 をセットアップするには、次のすべての手順を完了していることを確認してください。

API アクセス用のアプリ キー

Google がアプリ証明書の SHA1 フィンガープリントを要求する場合、ほとんどの場合、これを 2 回実行する必要があります。1 回はデバッグ証明書用、もう 1 回は公開証明書用です。

keytool -list -v -keystore publishcert.keystore
keytool -list -v -keystore ~/.android/debug.keystore

市場に出回っているアプリのフィンガープリントは、テスト中のアプリのフィンガープリントとは異なります。

Google API コンソールでサービスを有効にする

Google API コンソールにログインします。
サービス ページで、 を見つけますGoogle Maps Android API v2

-Google Maps API v2異なりますGoogle Maps Android API v2

[API アクセス] タブで、Create new Android Key

API にアクセスするための証明書署名を追加します。

yourrelease-fingerprint;com.example.project.package
yourdebug-fingerprint;com.example.project.package

生成された API アクセス キーが提供されます。

最初に API コンソールで API プロジェクトを作成する必要がある場合があります

アプリ マニフェストを修正する

<application>要素内に API キーを追加します。

<meta-data
    android:name="com.google.android.maps.v2.API_KEY"
    android:value="yourapikey"/>

次の権限を追加します。

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

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

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES"/>

次の機能リクエストを追加します。

<uses-feature
    android:glEsVersion="0x00020000"
    android:required="true" />
于 2012-12-05T16:39:43.397 に答える
18

以下のすべての点に注意してください。

1) 間違ったサービスが有効化されました。「 Google Maps API v2 」ではなく「Google Maps Android API v2 が有効になっていることを確認し、API キーを再生成してください。

2) 次の要素をマニフェストに追加します。com.example.mapdemo をアプリケーションのパッケージ名に置き換えます。

3)正しい証明書とキーの使用。私の電話でアプリを実行すると、デバッグ中に機能しない証明書をリリースします。代わりに、デバッグ キーストア証明書のフィンガープリントを使用する必要があります。

于 2013-04-23T10:56:39.703 に答える
7

マニフェストに問題がある可能性があります。以下は私にとってはうまくいき、具体的permission.MAPS_RECEIVEには私が持っていた同様の問題を解決しました:ズームボタンとmyLocationが表示されましたが、マップにはタイルがありませんでした...

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.discos2.example"
    android:versionCode="1"
    android:versionName="1.0" >

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

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

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

    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES" />

    <uses-feature
        android:name="android.hardware.location"
        android:required="false" />
    <uses-feature
        android:name="android.hardware.location.network"
        android:required="false" />
    <uses-feature android:name="android.hardware.location.gps" />
    <uses-feature
        android:name="android.hardware.wifi"
        android:required="false" />
    <uses-feature
        android:glEsVersion="0x00020000"
        android:required="true" />

    <application
        android:hardwareAccelerated="true">
        <meta-data
            android:name="com.google.android.maps.v2.API_KEY"
            android:value="__NEW_GOOGLE_MAPS_V2_KEY_GOES_HERE__" />

        <activity
            android:name=".ui.activities.MainActivity" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

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

    </application>

</manifest>
于 2012-12-05T17:01:39.343 に答える
4

ところで、私は Windows 7 を実行しています。次のことがわかるまで、何日もこれに悩まされていました。複数の debug.keystore があります。1つは次の場所にあります。

C:\android-sdk\.android\debug.keystore

そして、別の場所があります:

C:\Users\David\.android\debug.keystore

「C:\Users\David.android\debug.keystore」を見つけたら、次のことを行いました。

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

結果の SHA1 を Google コンソールに送信し、機能する API キーを取得しました。「C:\android-sdk.android\debug.keystore」のキーストアから SHA1 を取得しても機能しません。

于 2013-03-31T16:24:35.427 に答える
1

「Google Maps API v2」ではなく、間違ったサービス「Google Maps Android API v2」を有効にした可能性があります

于 2013-05-03T00:12:13.737 に答える
1

私は同じ問題に直面していました。しかし、私にとってはキーストアの問題であり、デバッグキーストアで署名していたため、GoogleマップAPI v2はGoogleマップに接続できませんでした.

JDKで利用可能なkeytoolを使用してSHA1を生成します(emy-release-keystore.keystoreで見つけることができます)を使用して新しいAPIキーを作成しました。C:\Users\{YOUR_USER_NAME}\.android\my-release-key.keystorそれをコピーして、Google コンソールに登録します。

アプリケーション マニフェスト ファイルで生成された API キーを使用します。で署名するとmy-release-key.keystore、デバイスにプッシュされます。

于 2013-01-28T09:21:28.503 に答える
0

このタスクを達成するために必要なことはすべて行いました。私のキー、マニフェスト、コードなどは大丈夫でした。しかし、多くの時間を無駄にした結果、使用していたデバッグ キーストアが間違っていました。結局のところ、SHA1フィンガープリントがすべてでした。

于 2015-05-10T06:26:35.900 に答える
0

SHA を使用して新しいAPI キーを作成し、最も重要なこととして正しいパッケージ名 (com.example.mapdemo など) を作成するだけです。で新しく生成されたキーを使用しますAndroidManifest.xml

Googleマップを使用するすべての新しいEclipseプロジェクトに新しいAPIキーが必要だと思います(新しいキーを作成するにはパッケージ名も必要であり、これはすべてのプロジェクトで本質的に異なります).

于 2013-04-23T23:03:48.973 に答える
0

何時間も費やした後、問題は最終的に解決されました。

上記のいずれも問題の解決に役立たない場合は、API キーを values/strings.xml に入力してみてください

<meta-data android:name="com.google.android.maps.v2.API_KEY" android:value="@string/map_key"/>

<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="map_key">YOUR_KEY</string>
</resources>
于 2013-07-16T11:25:43.723 に答える