web-dev-qa-db-fra.com

Google Maps API V2 'n'a pas pu charger la carte. Impossible de contacter les serveurs Google.

J'ai vérifié et revérifié mon clé API enregistrée sur la console Google, mais l'erreur suivante persiste:

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

Ce que je vois, ce sont les boutons de zoom avant/arrière et l’arrière-plan du MapView mais pas de carte ??? !!!

Des idées???

Réponse

Je vais l'afficher ici car ce qui a résolu mon problème a été indiqué dans les commentaires de la réponse acceptée ci-dessous.

C'était la permission READ_GSERVICES. Pour une raison quelconque, la permission n’était pas mentionnée sur le site du développeur lorsqu’il s’agissait de les utiliser.

24
StuStirling

Pour configurer l'API Google Maps v2 sur Android, assurez-vous que vous avez terminé la procédure all des étapes suivantes.

Clé d'application pour l'accès à l'API

Lorsque Google vous demande l'empreinte SHA1 de votre certificat d'application, vous souhaiterez probablement l'exécuter deux fois, une fois pour votre certificat de débogage et une fois pour votre certificat de publication.

keytool -list -v -keystore publishcert.keystore
keytool -list -v -keystore ~ ​​/ .Android/debug.keystore

L'empreinte digitale de l'application sur le marché est différente de celle d'une application que vous venez de tester!

Activer le service sur la console Google API

Connectez-vous à la Console Google API .
Sur la page des services, recherchez Google Maps Android API v2.

Note - Google Maps API v2 est DIFFÉRENT puis Google Maps Android API v2

Dans l'onglet API Access, cliquez sur Create new Android Key.

Ajoutez vos signatures de certificat pour accéder aux API.

votre empreinte digitale; com.example.project.package
yourdebug-fingerprint; com.example.project.package

Vous recevrez une clé d'accès à l'API générée.

Vous devrez peut-être d'abord créer un projet API dans la console API.

Modifier le manifeste de l'application

Ajoutez votre clé API à l’intérieur de l’élément <application>.

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

Ajoutez les autorisations suivantes:

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

Ajoutez la demande de fonctionnalité suivante:

<uses-feature
    Android:glEsVersion="0x00020000"
    Android:required="true" />
48
Matt Clark

Assurez-vous que tous les points mentionnés ci-dessous sont pris en compte:

1) Un service incorrect a été activé. Assurez-vous que "API Google Maps Android v2" est activé et que "API Google Maps v2" est généré et générez à nouveau la clé API.

2) Ajoutez les éléments suivants à votre manifeste. Remplacez com.example.mapdemo par le package nom de votre application .

3) Utilisation de certificat correct et clé. Certificat de version, qui ne fonctionnera pas pendant le débogage lorsque vous exécutez l'application sur mon téléphone. Vous devez utiliser l'empreinte digitale du certificat de fichier de clés de débogage.

18
Monika

Ce pourrait être un problème avec le manifeste. Les travaux suivants pour moi, en particulier permission.MAPS_RECEIVE, ont résolu un problème similaire: des boutons de zoom et mon emplacement affiché, mais la carte ne contenait aucune tuile.

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

BTW, je suis sous Windows 7. Je me suis fait avoir pendant des jours, jusqu'à ce que je découvre ce qui suit: J'ai plus d'un debug.keystore. On est à:

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

Et il y en a un autre, à:

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

Une fois que j'ai trouvé le "C:\Utilisateurs\David.Android\debug.keystore" j'ai fait:

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

J'ai soumis le SHA1 résultant à la console Google et obtenu une clé API qui fonctionne . Obtenir le SHA1 à partir du fichier de clés situé dans "C:\Android-sdk.Android\debug.keystore" ne fonctionne pas.

4
BinCodinLong

Vous avez peut-être activé le mauvais service "API Google Maps Android v2" et non "API Google Maps v2".

1
George Nguyen

Je faisais face au même problème. mais pour moi c’était un problème de magasin de clés, je le signais avec le magasin de clés de débogage, de sorte que Google Map api v2 n’était pas en mesure de se connecter à Google map.

J'ai créé une nouvelle clé api en utilisant my-release-keystore.keystore (vous pouvez la trouver à C:\Users\{YOUR_USER_NAME}\.Android\my-release-key.keystore), puis en générant SHA1 à l'aide du logiciel keytool disponible dans le JDK. copiez-le et inscrivez-vous avec google console.

Utilisez la clé api générée dans le fichier manifeste de vos applications. Le signer avec my-release-key.keystore le poussera sur l'appareil.

1
Navi

Après avoir passé de nombreuses heures, le problème avait finalement été résolu:

si rien de ce qui précède ne vous a aidé à résoudre votre problème, essayez d'utiliser votre clé api dans 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>
0
ODAXY

J'ai fait tout ce qui était nécessaire pour accomplir cette tâche. Ma clé, mon manifeste, mon code, etc. étaient corrects. Mais à la fin, après avoir perdu beaucoup de temps, le fichier de clés de débogage que j’utilisais était le mauvais. Il s'agissait de l'empreinte SHA1 après tout.

0
class Android

Créez simplement la clé new API avec SHA et surtout, corrigez le nom du paquet (comme com.example.mapdemo). Utilisez la nouvelle clé générée dans votre AndroidManifest.xml.

Je suppose que nous avons besoin d’une nouvelle clé d’API pour tous les nouveaux projets Eclipse utilisant Google Maps (la création de la nouvelle clé requiert également le nom du package, qui est essentiellement différent pour tous les projets).

0
Hemant

J'ai eu le même problème. J'ai tout simplement manqué ce point: Lorsque vous répertoriez vos services Google API, trois API Google Maps sont disponibles.

API Google Maps Android v2
Google Maps API v2
Google Maps API v3 ...

Vérifiez que la version Android (API Google Maps Android v2) est activée lorsque vous codez pour Android . L’API Google Maps v2 n’est pas suffisant.

0
Premek