J'essaie d'obtenir une carte Google à afficher. Je peux voir le fond (fond gris clair, petites tuiles, logo Google en bas à gauche), alors je sais que je suis proche. Cependant, aucune carte réelle n'est affichée. Dans le LogCat, je vois ce message se répéter encore et encore:
05-14 13: 28: 17.926: W/System.err (27458): à Android_maps_conflict_avoidance.com.google.googlenav.datarequest.DataRequestDispatcher $ DispatcherServer.run (DataRequestDispatcher.Java:1702)
J'utilise Google Maps api 2 avec un téléphone connecté pour effectuer des tests sous 2.3.4.
Quelqu'un sait ce qui pourrait causer cela? Merci!
package com.example.maptest;
import Android.os.Bundle;
import com.google.Android.maps.MapActivity;
import com.google.Android.maps.MapController;
import com.google.Android.maps.MapView;
public class MyMapActivity extends MapActivity {
private MapView mapView;
private MapController mapController;
@Override public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.map_layout);
mapView = (MapView)findViewById(R.id.map_view);
}
@Override
protected boolean isRouteDisplayed() {
return false;
}
}
AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:Android="http://schemas.Android.com/apk/res/Android"
package="com.example.maptest"
Android:versionCode="1"
Android:versionName="1.0" >
<permission Android:name="com.example.maptest.permission.MAPS_RECEIVE" Android:protectionLevel="signature"/>
<uses-permission Android:name="Android.permission.ACCESS_NETWORK_STATE" />
<uses-permission Android:name="com.example.maptest.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" />
<uses-feature
Android:glEsVersion="0x00020000"
Android:required="true"/>
<uses-sdk
Android:minSdkVersion="8"
Android:targetSdkVersion="17" />
<application
Android:allowBackup="true"
Android:icon="@drawable/ic_launcher"
Android:label="@string/app_name"
Android:theme="@style/AppTheme" >
<uses-library Android:required="true" Android:name="com.google.Android.maps" />
<activity
Android:name="com.example.maptest.MyMapActivity"
Android:label="@string/app_name" >
<intent-filter>
<action Android:name="Android.intent.action.MAIN" />
<category Android:name="Android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
Android:name=".MainActivity" >
</activity>
<meta-data
Android:name="com.google.Android.maps.v2.API_KEY"
Android:value="xxxxxxxxxxxxxxxxxxxx"/>
</application>
</manifest>
Ce problème est généralement lié à la clé de l'API de carte utilisée pour signer le manifeste. Jetez un coup d'œil à cet article et celui-ci qui décrivent la même erreur que vous rencontrez. Dans les deux cas, c'est parce que la clé API utilisée a été créée avec la mauvaise variable keystore
. Vous devez vous assurer que vous utilisez votre magasin de clés de débogage lorsque vous créez une clé API dans la console d'API Google si vous envisagez de tester à partir d'Eclipse.
Fondamentalement, vous mélangez une API v1 Android obsolète avec la nouvelle API v2.
Le moyen le plus simple de migrer consiste à supprimer tout le code lié à la v1 et à repartir de zéro en suivant ce lien: https://developers.google.com/maps/documentation/Android/start
Si vous avez plusieurs packages dans votre application, faites attention lorsque vous créez le API key
, vous devez utiliser le nom du package inclus dans en haut du fichier Android mainfest.xml.
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:Android="http://schemas.Android.com/apk/res/Android"
**package="com.xxx.xxx"**
Android:versionCode="1"
Android:versionName="1.0" >
eh bien en fait j'avais vécu ce problème et ça me rend fou. après j'ai trouvé la solution. très simple:
1- Dans votre projet, google_maps_api.xml, vérifiez que le lien Web correspond au nom de votre package, si ce dernier existe et est correct. aller à la page et obtenir la clé
Pour en obtenir un, suivez ce lien, suivez les instructions et cliquez sur "Créer" à la fin:
https://console.developers.google.com/flows/enableapi?apiid=maps_Android_backend&keyType=CLIENT_SIDE_Android&r=...
2- Il suffit de créer un nouveau projet d'activité Google Maps pour obtenir le code SHA-1.
n'oubliez pas que le code SHA-1 est identique dans votre autre projet, mais que le lien Web est unique pour chaque programme.
accédez à la console du développeur pour activer l’API de cartes de votre appareil, puis copiez votre clé et collez-la dans valeurs-> google_maps_api.xml. Cela fonctionne Utilisez la clé Android (créée automatiquement par Google Service) si sur les appareils Android
Après des jours de lutte, j'ai trouvé le problème. Dans mon manifeste, la valeur de la clé était stockée dans un fichier xml et cela ne fonctionnait pas .
<meta-data
Android:name="com.google.Android.geo.API_KEY"
Android:value="AIzxxxxxxxxxxxxxxxxxxxxxxxkey" /> and it works.
Vient de supprimer le fichier XML ........ J'espère que ça aide!
Une des raisons les plus probables est que vous n'avez pas ajouté de clé API dans le fichier manifeste du projet. Le moyen le plus simple de résoudre ce problème consiste à accéder au fichier "google_maps_api.xml" , à copier le lien dans le fichier et à le coller dans le navigateur. Cliquez sur le bouton Créer dans le lien et copiez la clé api générée par la suite, puis collez-la dans le AndroidManifest.xml à la place de "Votre clé Api" qui se trouve à l'intérieur du balise meta-data, compilez le projet afin de résoudre le problème.