2013-06-11 9 views
6

Ich versuche zu erstellen und Anwendung, die mit Google Maps verbindet. Aber wenn der Bildschirm geladen wird, wo die Karte sein sollte, ist es grau. Wie behebe ich das?Google Maps API v2 grauen Bildschirm

Die wichtige Nachricht von meinem logcat.

06-11 03:32:55.196: E/Google Maps Android API(11671): 
Ensure that the following correspond to what is in the API Console: Package Name: my pacakage, 
API Key: my key, 
Certificate Fingerprint: my fingerprint 

Die Aktivität

import android.os.Bundle; 
import android.view.Menu; 

import android.support.v4.app.FragmentActivity; 

public class mapPage extends FragmentActivity { 


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

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     // Inflate the menu; this adds items to the action bar if it is present. 
     getMenuInflater().inflate(R.menu.main, menu); 
     return true; 
    } 

} 

Manifest

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

    <uses-sdk 
     android:minSdkVersion="8" 
     android:targetSdkVersion="17" /> 
    <permission 
    android:name="my package.permission.MAPS_RECEIVE" 
    android:protectionLevel="signature"/> 
    <uses-permission android:name="my package.permission.MAPS_RECEIVE"/> 
    <!-- Copied from Google Maps Library/AndroidManifest.xml. --> 
    <uses-sdk 
    android:minSdkVersion="8" 
    android:targetSdkVersion="16"/> 
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/> 
    <uses-permission android:name="android.permission.INTERNET"/> 
    <uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES"/> 
    <!-- External storage for caching. --> 
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> 
    <!-- My Location --> 
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/> 
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/> 
    <!-- Maps API needs OpenGL ES 2.0. --> 
    <uses-feature 
    android:glEsVersion="0x00020000" 
    android:required="true"/> 
    <!-- End of copy. --> 
    <application 
     android:allowBackup="true" 
     android:icon="@drawable/ic_launcher" 
     android:label="@string/app_name" 
     android:theme="@style/AppTheme" > 

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

     <activity 
      android:name="my package.MainActivity" 
      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=".main"> 
       </activity> 

     <activity android:name=".mapPage"> 
       </activity> 

     <activity android:name=".ThirdPartyWeb" 
      android:theme="@android:style/Theme.Dialog"> 

       </activity> 

    </application> 

</manifest> 

Das Layout

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" > 

    <fragment xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/map" 
     android:layout_alignParentTop="true" 
     android:layout_centerInParent="true" 
     android:layout_height="250dp" 
     android:layout_width="fill_parent" 
    class="com.google.android.gms.maps.SupportMapFragment"/> 

    <ImageView 
     android:layout_alignParentTop="true" 
     android:layout_centerInParent="true" 
     android:layout_height="50dp" 
     android:layout_width="fill_parent" 
     android:background="@color/darkGrey"/> 

     <Button 
     android:layout_alignParentTop="true" 
     android:layout_marginTop="10dp" 
     android:layout_alignParentLeft="true" 
     android:id="@+id/menuButton" 
     android:background="@drawable/icon_menu" 
     android:layout_height="30dp" 
     android:layout_width="30dp"/> 

     <Button 
     android:layout_alignParentTop="true" 
     android:layout_marginTop="10dp" 
     android:layout_toRightOf="@+id/menuButton" 
     android:layout_marginLeft="20dp" 
     android:id="@+id/" 
     android:background="@drawable/icon_off" 
     android:layout_height="35dp" 
     android:layout_width="55dp"/> 

     <EditText   
     android:layout_alignParentTop="true" 
     android:layout_width="wrap_content" 
     android:layout_marginTop="10dp" 
     android:layout_toRightOf="@+id/" 
     android:layout_marginLeft="20dp" 
     android:layout_toEndOf="@+id/" 
     android:id="@+id/seachBox" 
     android:hint="@string/search" 
     android:layout_height="35dp" 
     android:layout_alignParentEnd="true" 
     android:background="@color/white"/> 

     <Button 
     android:layout_alignParentTop="true" 
     android:layout_alignParentRight="true" 
     android:layout_marginTop="10dp" 
     android:id="@+id/searchButton" 
     android:background="@drawable/graphic_search" 
     android:layout_height="35dp" 
     android:layout_width="20dp"/> 

     <ImageView 
     android:layout_above="@+id/newsFeed" 
     android:layout_centerInParent="true" 
     android:layout_height="35dp" 
     android:layout_width="fill_parent" 
     android:background="@color/darkGrey"/> 

     <TextView 
      android:layout_alignParentLeft="true" 
      android:layout_height="wrap_content" 
      android:layout_width="wrap_content" 
      android:layout_above="@+id/newsFeed" 
      android:layout_marginBottom="11dp" 
      android:textColor="@color/white" 
      android:text="@string/news_feed" 
      android:textAppearance="?android:attr/textAppearanceSmall"/> 

     <ListView 
      android:layout_alignParentBottom="true" 
      android:id="@+id/newsFeed" 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content">" 

     </ListView> 



</RelativeLayout> 

Antwort

11

Ok Problem gelöst werden angezeigt. Auf der Google API-Konsole gibt es zwei Google Map API v2. Ich hatte das nur für Google Maps api v2, wenn man genau darüber schaut, sagt google maps v2 android. Ich habe auch den eingeschaltet und die Karte läuft.

+0

Sie brauchen die Google Map API V2 nicht, da dies die JavaScript-API für webbasierte Anwendungen/Websites ist. –

0

try folgenden hinzuzufügen Datei zu manifestieren (nach Meta-Daten-Tag)

<uses-library 
    android:name="com.google.android.maps" 
    android:required="true" /> 
+1

dies ist eine Google API v1 Erlaubnis und wird nicht benötigt in Google API v2 –

+0

@techroid Ihr Vorschlag gilt nur für Maps V1. –

1

@rawant rai: vielleicht ist dein Code für API v1, weil ich API v2 verwende und solcher Code ist nicht notwendig.

@author: Testen Sie es auf dem Telefon oder Emulator. Auf dem Telefon müssen einige Google-Dienste installiert sein, damit die Karte funktioniert. Wie wird die Vorbereitung Arbeitsprojekt wird mehr hier beschrieben: https://developers.google.com/maps/documentation/android/start

+0

er hat es in der Manifest-Datei .. –

+0

im Debugging auf meinem Gerät –

4

Wie aus dem Fehler sieht, scheint es, dass Ihre Konfigurationen in der API-Konsole von Google falsch ist. Werfen Sie einen Blick auf diesen Blog-Post schrieb ich und stellen Sie sicher, dass Sie alle Schritte richtig tun:

Google Maps API V2 Key

+0

der Fingerabdruck API-Schlüssel und Paketname alle passen in meiner API-Konsole –

1

Es gibt zwei Modus. Release-Modus und Debug-Modus, wenn Sie im Freigabemodus verwenden möchten, dann möchten Sie Fingure Print erstellen. Debug-Modus ist der übliche Modus.

https://developers.google.com/maps/documentation/android/start#obtaining_an_api_key

Siehe die Freigabebescheinigung Fingerabdruck und Debug-Zertifizierung fingure Druck in doucmentation

+0

Ich unterzeichne eine Anwendung jedes Mal und verschiebe die apk auf mein Gerät zu debuggen und meine Schlüssel und alles passt zu meiner api-Konsole –

0

Ich hatte das gleiche Problem, aber für mich funktioniert die App nicht mehr. Ich habe herausgefunden, dass es ein Problem mit debug.keystore war, dass Eclipse generiert. Es kann passiert, wenn:

  • Quellcode aus Repo aktualisiert, aber debug.keystore ist aus lokalen Verzeichnis erhalten USER_DIR.android\debug.keystore
  • Sie Disc-Ausfall haben und Sie nicht das alte restaurierte debug.keystore
  • Sie USER_DIR.android\debug.keystore irgendwie
gelöscht

Um dieses Problem zu bestätigen, erhalten Sie SHA1 von Ihrem USER_DIR.android\debug.keystore und vergleichen Sie mit dem von Android Console. Sie müssen gleich sein. Wenn nicht versuchen, neue Key für Android-Anwendungen durch folgende this guide zu generieren.

Sobald Sie es dann aktualisieren Sie Ihre AndroidManifest.xml Datei

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

und sauber ganze ./bin Verzeichnis. Machen Sie es manuell, vertrauen Sie nicht Projekt -> Clean ... Option in Eclipse. Deinstallieren Sie die App vom Gerät, bevor Sie eine neue installieren.

Um dieses Problem in Zukunft zu vermeiden, fügen Sie Ihren Debug Keystore zu Repo hinzu. Freilassung im Verborgenen.

-2

Sie verwenden den falschen SHA1. Sie müssen SHA1 zum Debuggen verwenden (auch können Sie in Ihrem App-Server SHA1, Client SHA1) haben. Wenn Sie in Android Studio nach Ihrem SHA1 suchen, müssen Sie sicherstellen, dass Sie nicht SHA1 auf Ihren Server kopieren, sondern SHA1 debuggen. Dann achten Sie auf logcat und stellen Sie sicher, dass Ihr Paketname übereinstimmt. Dann überprüfen Sie das Dashboard (in der Google-Konsole) und aktivieren Sie Google Maps-APIs. Und aufmerksam lesen logcat. Das Problem würde dort geschrieben werden. Ich hatte das selbe Problem, dann habe ich auf Logcat geachtet und dieses Problem gelöst. Viel Glück;)

+0

Hallo, willkommen in SO. Nur damit Sie wissen, diese Frage ist 3 Jahre alt und hat bereits eine angenommene Antwort :) Bitte seien Sie auch so spezifisch wie möglich in Ihren zukünftigen Antworten - wie, wo ist dieser SHA1 Schlüssel in der App gesetzt, etc. Vielleicht finden Sie Dieser Leitfaden hilfreich: http://stackoverflow.com/help/how-to-answer. Fröhliches Hacken! – theFunkyEngineer

+0

Bitte korrigieren Sie auch Ihre Antwort, so verwendet es richtige Wörter und nicht "U" für "Sie" und ich bin mir nicht sicher, was "n" sein soll, aber bitte lösen. Wenn ich Ihre Antwort nicht vollständig verstehen kann, werde ich den Vorschlag ablehnen. – Popeye

+0

Es ist in Ordnung zu helfen, wenn Sie einen Vorschlag haben, aber bitte wissen Sie den Unterschied zwischen einem Kommentar und einer Antwort und bitte verwenden Sie keinen Text. Verwenden Sie bitte richtiges Englisch. Und wenn Sie zusätzliche Informationen zu Ihrer Antwort hinzufügen möchten, verwenden Sie bitte die Bearbeitungsfunktion, um sie hinzuzufügen und nicht als Kommentar zu hinterlassen. Dein letzter Kommentar ist eine Mischung aus einem Kommentar und zusätzlichen Informationen, die deine Antwort verbessern würden. – Popeye

Verwandte Themen