web-dev-qa-db-fra.com

Exemple de code Google Map pour Android Api V2 ne fonctionne pas

J'avais déjà essayé d'utiliser le code Google Map Sample Code fourni auparavant dans Google_Play_SERVICE/SAMPLE en utilisant toutes les options disponibles. 

01-14 17: 58: 39.773: API Android E/Google Maps (13114): autorisation échec.

Il m'a montré l'écran vide pour toutes les options de carte d'exemple.

Maintenant, j'ai créé un nouveau projet et voici son code complet: -

Activity.Java

public class MapActivity extends FragmentActivity
{
    private Context context = this;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_map);

        GoogleMap gMap = ((SupportMapFragment)getSupportFragmentManager().findFragmentById(R.id.map)).getMap();

        int result = GooglePlayServicesUtil.isGooglePlayServicesAvailable(context);
        Log.e("Maps", "Result int value::" + result);
        switch (result) {
        case ConnectionResult.SUCCESS:
            Log.e("Maps", "RESULT:: SUCCESS");          
            break;

        case ConnectionResult.DEVELOPER_ERROR:
            Log.e("Maps", "RESULT:: DE");           
            break;

        case ConnectionResult.INTERNAL_ERROR:
            Log.e("Maps", "RESULT:: IE");           
            break;

        case ConnectionResult.INVALID_ACCOUNT:
            Log.e("Maps", "RESULT:: IA");           
            break;

        case ConnectionResult.NETWORK_ERROR:
            Log.e("Maps", "RESULT:: NE");           
            break;

        case ConnectionResult.RESOLUTION_REQUIRED:
            Log.e("Maps", "RESULT:: RR");           
            break;

        case ConnectionResult.SERVICE_DISABLED:
            Log.e("Maps", "RESULT:: SD");           
            break;

        case ConnectionResult.SERVICE_INVALID:
            Log.e("Maps", "RESULT:: SI");           
            break;

        case ConnectionResult.SERVICE_MISSING:
            Log.e("Maps", "RESULT:: SM");           
            break;
        case ConnectionResult.SERVICE_VERSION_UPDATE_REQUIRED:
            Log.e("Maps", "RESULT:: SVUR");         
            break;
        case ConnectionResult.SIGN_IN_REQUIRED:
            Log.e("Maps", "RESULT:: SIR");          
            break;      

        default:
            break;
        }
        gMap.setMapType(GoogleMap.MAP_TYPE_NORMAL);
        gMap.setMyLocationEnabled(true);
        Log.e("Maps", "------EOC-------");
    }
}

activity_map.xml

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

Manifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:Android="http://schemas.Android.com/apk/res/Android"
    package="net.dottech.map"
    Android:versionCode="1"
    Android:versionName="1.0" >

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

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

    <permission
        Android:name="net.dottech.map.permission.MAPS_RECEIVE"
        Android:protectionLevel="signature" />

    <uses-permission Android:name="net.dottech.map.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:allowBackup="true"
        Android:icon="@drawable/ic_launcher"
        Android:label="@string/app_name"
        Android:theme="@style/AppTheme" >
        <activity
            Android:name="net.dottech.map.MapActivity"
            Android:label="@string/app_name" >
            <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="removed" />
    </application>

</manifest>

LOG

01-21 13:09:09.243: E/Maps(449): Result int value::0
01-21 13:09:09.243: E/Maps(449): RESULT:: SUCCESS
01-21 13:09:09.243: E/Maps(449): ------EOC-------
01-21 13:09:09.248: D/LocationManagerService(1852): gps location requested by an application
01-21 13:09:09.253: D/SensorManager(449): registerListener :: handle = 0  name= K3DH 
Acceleration Sensor delay= 20000 Listener= maps.i.a@41a054f8
01-21 13:09:09.353: D/(449): Device driver API match
01-21 13:09:09.353: D/(449): Device driver API version: 10
01-21 13:09:09.353: D/(449): User space API version: 10 
01-21 13:09:09.353: D/(449): mali: REVISION=Linux-r2p4-02rel0 BUILD_DATE=Fri May  4 10:32:42 KST 2012
01-21 13:09:12.398: D/Sensors(449): Remain listener = Sending .. normal delay 200ms
01-21 13:09:12.398: I/Sensors(449): sendDelay --- 200000000
01-21 13:09:12.398: I/Sensors(1852): setDelay :: handle = 0   delay = 200000000
01-21 13:09:12.398: D/SensorManager(449): JNI - sendDelay
01-21 16:14:17.835: E/Google Maps Android API(12168): Failed to load map.  Could not contact Google servers.

Capture d'écran

Google Map Android Api V2 Example tried, no success

Voici le résultat, écran vide avec options de zoom, aucune carte dans MapView.

J'ai suivi chaque étape mentionnée à: -

1.) Tutorial

2.) Google Map Android Api V2

13
Cool Jatt

Vérifiez s'il vous plaît..

  1. vérifiez si le dossier "libs" contenant le "Android-support-v4.jar" existe dans votre projet. 

    "Android-support-v4.jar" se trouve dans "/extras/Android/compatibility/v4/Android-support-v4.jar" sous votre répertoire "Android-sdk".

  2. Avant d'exécuter votre projet, vous devez définir la cible de génération de votre projet sur "API Google", et non sur Android x.x. version: sélectionnez votre projet et cliquez sur Projet> Propriétés> Projet Cible de construction dans Eclipse, sélectionnez les "API Google" souhaitées, puis exécutez votre projet sur votre téléphone. Si vous utilisez l'émulateur, DOIT également définir l'AVD de l'émulateur sur l'une des "API Google".

  3. Une fois de plus, vous n'avez pas besoin de créer la nouvelle clé d'API Google Maps pour tester votre projet. Il vous suffit d'utiliser la clé d'API fournie par défaut, indiquée comme "Clé pour les applications de navigateur (avec référents)" dans votre console Google APIs. .

  4. Enfin, le plus important est d’ajouter les services Google Play en tant que projet de bibliothèque Android, comme suit:

    Sélectionnez Fichier> Importer> Android> Code Android existant dans Workspace et cliquez sur Suivant . Sélectionnez Parcourir ..., entrez/extras/google/google_play_services/libproject/google-play-services_lib, puis cliquez sur Terminer.

26
BBonDoo

J'ai compilé votre code et je fais fonctionner les cartes. Je pense avoir découvert le problème: des informations d'identification erronées ont été mises en cache.

La première fois que j'ai exécuté votre code, il utilisait de mauvaises informations d'identification. Bien que je les aie corrigées, l'erreur "échec de l'autorisation" persistait. Ensuite, j'ai simplement désinstallé l'application, je l'ai exécutée à nouveau, puis les cartes ont fonctionné. 

Apparemment, les informations d'identification Google Maps sont mises en cache quelque part. Simpler en exécutant l'application à nouveau ne les écrase pas.

Cela explique aussi pourquoi je ne fais travailler les cartes qu'après avoir exécuté mon autre application en utilisant Debug As (pas Run As) ...

J'ai eu le même problème que vous et les cartes ne fonctionnaient que lorsque vous exécutiez l'application sur un périphérique réel via "Debug As> Android Application".

Je suis un débutant dans le développement Android. Je ne sais pas si c'est comme ça ou s'il nous manque quelque chose:) </ Strike>

15
gaflach

Une raison commune à cela est de ne pas enregistrer les clés correctes dans votre console API Google. En particulier, si vous lancez directement à partir d'Eclipse, votre application n'est pas signée avec votre clé de version, mais avec votre clé de débogage. Assurez-vous d'enregistrer les deux empreintes de clé et les noms de paquet dans votre console. Cela aide aussi de vérifier que les noms de vos paquets sont corrects. 

Voici un link pour savoir comment trouver l’empreinte de votre certificat de débogage. Regardez sous la section 'Affichage de l'empreinte du certificat de débogage'

5
iagreen

Veuillez utiliser la touche Navigateur lorsque vous téléchargez et exécutez le projet exemple à partir d'Internet . La clé Android ne fonctionnera pas dans ce cas et donnera cette erreur.

"Impossible de contacter le serveur. Echec de l'autorisation"

Accédez à votre console API et obtenez la clé de votre navigateur.

Merci

Faites-moi savoir si vous avez des questions concernant Google Maps Api V2

2
Gaurav Arora

J'ai eu ce problème parce que restriction était activé pour ma clé d'API dans la console Google.

 enter image description here

Assurez-vous qu'il est défini sur none, puis réessayez.

1
ojonugwa ochalifu

S'il vous plaît voir déjà posté answer sur SO, il va certainement vous aider.

Besoin d'importer un projet de \extras\google\google_play_services\libproject\google-play-services_lib

Mettre à jour :

Make sure your device have Google Play Services apk installed and its version should be > 2

Dites-moi si cela marche pour vous..

1
moDev

Dans ce cas, la clé api n'est pas correcte, la carte google ne s'affiche pas, suivez donc la réponse.

Mettez les métadonnées ci-dessous dans le fichier de menifest Android en premier.

 <meta-data
    Android:name="com.google.Android.gms.version"
        Android:value="@integer/google_play_services_version" />
 <meta-data
        Android:name="com.google.Android.maps.v2.API_KEY"
        Android:value="AIzaSyAU9ShujnIg3IDQxtPrafaf7Q1qOvFVdwNmWc4" />

Et ensuite, mettez la bonne clé Api dans le fichier manifeste.

0

J'ai compris le problème lié à l'enregistrement du certificat d'application. 

Nous avons essayé de signer l’application avec notre propre keystore & alias. Mais ici, nous devons exactement utiliser le debug.keystore qui est déjà disponible dans le SDK.

0
Harpreet