2013-06-11 30 views
6

Próbuję utworzyć i aplikację, która łączy się z mapami Google. Ale kiedy ekran ładuje się tam, gdzie mapa powinna być po prostu szara. Jak to naprawić?Google Maps API v2 szary ekran

Ważna wiadomość od mojego 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 

Activity

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; 
    } 

} 

Oczywisty

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

Układ

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

Odpowiedz

11

Ok problem rozwiązany. W konsoli Google api znajdują się dwie mapy google api v2. Miałem jeden tylko dla google map api v2, jeśli spojrzeć tuż nad nim, to mówi Google Maps v2 Android. Włączyłem także ten i mapa jest uruchomiona.

+0

Nie potrzebujesz interfejsu API Map Google w wersji 2, ponieważ jest to interfejs API javascript dla aplikacji/witryn internetowych. –

0

Spróbuj dodać następujące do pliku manifestu (po tagu meta-danych)

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

To jest uprawnienie google api v1 i nie jest potrzebne w google api v2 –

+0

@techroid Twoja sugestia dotyczy tylko map V1. –

1

@rajwant rai: może twój kod jest dla API v1, ponieważ używam API v2 i taki kod nie jest konieczny.

@author: Czy testujesz to na telefonie lub emulatorze. Aby mapa działała, telefon musi mieć zainstalowane usługi Google. Jak przygotować pracę projekt jest bardziej opisany tutaj: https://developers.google.com/maps/documentation/android/start

+0

ma go w pliku manifestu .. –

+0

im debugowanie na moim urządzeniu –

4

Jak to wygląda z błędu, wydaje się, że konfiguracje w konsoli API Google jest źle. Spójrz na tym blogu pisałem i upewnij się, że robisz wszystkie kroki poprawnie:

Google Maps API V2 Key

+0

klucz APi odcisku palca i nazwa pakietu wszystko pasuje do mojej konsoli api –

1

Istnieją dwa tryby. tryb zwolnienia i tryb debugowania, jeśli chcesz używać w trybie zwolnienia, a następnie chcesz utworzyć niestandardowy wydruk fingure. tryb debugowania jest trybem zwykłym.

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

Zobacz Wyświetlanie linii papilarnych certyfikat dopuszczenia i certyfikacji debug fingure drukiem w doucmentation

+0

Podpisuję aplikację za każdym razem i przenoszę apk do mojego urządzenia, aby debugować i key and everthing pasuje do mojej konsoli api –

0

Miałem ten sam problem, ale dla mnie aplikacja przestała działać. Odkryłem, że to problem z plikiem debug.keystore generowanym przez Eclipse. może to się dzieje, gdy:

  • kod źródłowy jest aktualizowana z repo ale debug.keystore jest uzyskać od lokalnego katalogu USER_DIR.android\debug.keystore
  • masz awarię dysku i nie przywrócił stary debug.keystore
  • usunięto USER_DIR.android\debug.keystore jakoś

Aby potwierdzić ten problem, pobierz SHA1 ze swojego USER_DIR.android\debug.keystore i porównaj z numerem z Android Console. Muszą być takie same. Jeśli nie, spróbuj wygenerować nowy klucz dla aplikacji Android, postępując zgodnie z this guide.

Gdy pojawi się ona następnie zaktualizować plik AndroidManifest.xml

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

i czyste cały ./bin katalogów. Wykonaj to ręcznie, nie ufaj opcji Project -> Clean ... w Eclipse. Odinstaluj aplikację z urządzenia przed zainstalowaniem nowej.

Aby uniknąć tego problemu w przyszłości, dodaj swój plik debugowania do repozytorium. Zachowaj uwolnienie w tajemnicy.

-2

Używasz niewłaściwego SHA1. Musisz użyć SHA1 do debugowania (również możesz mieć na swoim serwerze aplikacji SHA1, klienta SHA1). Szukając swojego SHA1 w studiu android musisz upewnić się, że nie kopiujesz SHA1 na serwer, ale debugujesz SHA1. Następnie zwróć uwagę na logcat i upewnij się, że nazwa twojego pakietu jest identyczna. Następnie sprawdź pulpit nawigacyjny (w konsoli Google) i włącz interfejsy API Map Google. I uważnie przeczytaj logcat. Problem zostałby tam napisany. Miałem ten sam problem, a następnie zwróciłem uwagę na logcat i rozwiązałem ten problem. Powodzenia;)

+0

Witam, witam w SO. Tak więc, wiesz, to pytanie ma 3 lata i już ma akceptowaną odpowiedź :) Prosimy również o jak najdokładniejsze odpowiedzi w przyszłości - np. Gdzie jest ustawiony klucz SHA1 w aplikacji itp. Być może znajdziesz ten przewodnik jest pomocny: http://stackoverflow.com/help/how-to-answer. Szczęśliwy hacking! – theFunkyEngineer

+0

Proszę również poprawić swoją odpowiedź, aby użyła właściwych słów, a nie "U" dla "ty", i nie jestem pewien, co to znaczy "n", ale proszę, proszę. Jeśli nie, ponieważ nie mogę w pełni zrozumieć twojej odpowiedzi, zejdę na dół. – Popeye

+0

Dobrze jest pomóc, jeśli masz sugestię, ale proszę znać różnicę między komentarzem a odpowiedzią i proszę nie używać tekstu. Użyj proszę po angielsku. A jeśli masz dodatkowe informacje do dodania do swojej odpowiedzi, użyj funkcji edycji, aby ją dodać i nie zostawiaj tego jako komentarza. Twój ostatni komentarz to mieszanka komentarza i dodatkowych informacji, które poprawią twoją odpowiedź. – Popeye

Powiązane problemy