10

Witam każdego, przyszło mi do głowy, że mapy google wycofały poprzednią wersję API v1 i wprowadziły nową wersję google maps API v2. Wypróbowałem jeden przykład, podążając za niektórymi linkami w Google, w jaki sposób jestem pewien, że poprawnie otrzymałem klucz API, podając dokładny kod skrótu i ​​udało mi się uzyskać poprawny klucz API. Teraz udało mi się napisać również kod, ale kiedy próbowałem wykonać kod, otrzymuję błędy, pomóż mi rozwiązać ten oto kod:Jak zaimplementować Google Maps nowa wersja API v2

i próbowałem nawet kodów przykładowych dostarczonych przez usługi Google Play i mam ten sam problem

jest to próbka, że ​​mam zrobić, odwołując się kilka linków w google

Główna klasa aktywność

package com.example.apv; 

import com.google.android.gms.maps.CameraUpdateFactory; 
import com.google.android.gms.maps.GoogleMap; 
import com.google.android.gms.maps.MapFragment; 
import com.google.android.gms.maps.model.BitmapDescriptorFactory; 
import com.google.android.gms.maps.model.LatLng; 
import com.google.android.gms.maps.model.MarkerOptions; 
import android.os.Bundle; 
import android.app.Activity; 
import android.app.FragmentManager; 

public class MainActivity extends Activity 
{ 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 

    FragmentManager fragmentManager = getFragmentManager(); 
    MapFragment mapFragment = (MapFragment)fragmentManager.findFragmentById(R.id.map); 
    GoogleMap googleMap = mapFragment.getMap(); 
    LatLng sfLatLng = new LatLng(37.7750, -122.4183); 
    googleMap.setMapType(GoogleMap.MAP_TYPE_NORMAL); 
    googleMap.addMarker(new MarkerOptions().position(sfLatLng).title("San Francisco") 
       .snippet("Population: 776733") 
      .icon(BitmapDescriptorFactory.defaultMarker(
    BitmapDescriptorFactory.HUE_AZURE))); 
    googleMap.getUiSettings().setCompassEnabled(true); 
    googleMap.getUiSettings().setZoomControlsEnabled(true); 
    googleMap.animateCamera(CameraUpdateFactory.newLatLngZoom(sfLatLng, 10)) 

     } 
} 

main.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.MapFragment"/> 

i wreszcie mój plik manifestu

      <?xml version="1.0" encoding="utf-8"?> 
       <manifest xmlns:android="http://schemas.android.com/apk/res/android" 
           package="com.example.apv" 
           android:versionCode="1" 
           android:versionName="1.0" > 
        <uses-sdk android:minSdkVersion="8" android:targetSdkVersion="17"/> 

          <permission 
        android:name="com.codebybrian.mapsample.permission.MAPS_RECEIVE" 
            android:protectionLevel="signature"/> 


            <!--Required permissions--> 

      permission oid:name="com.codebybrian.mapsample.permission.MAPS_RECEIVE"/> 

       <!--Used by the API to download map tiles from Google Maps servers: --> 
       <uses-permission android:name="android.permission.INTERNET"/> 

        <!--Allows the API to access Google web-based services: --> 
       <uses-permission 
     android:name="com.google.android.providers.gsf.permission.READ_GSERVICES"/> 

      <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> 


        <!--Optional permissions--> 
      <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/> 
     <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/> 

     <!--Version 2 of the Google Maps Android API requires OpenGL ES version 2 --> 
       <uses-feature 
         android:glEsVersion="0x00020000"  
          android:required="true"/> 

    application android:label="@string/app_name" android:icon="@drawable/ic_launcher"> 

       <activity android:name=".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> 

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


          </manifest> 

uruchamiam moją aplikację w emulatorze wersji 4.2 i poziomu api 17 Dostałem następujący błąd

12-17 10:06:52.590: E/Trace(826): error opening trace file: No such file or directory (2) 
12-17 10:06:52.590: W/Trace(826): Unexpected value from nativeGetEnabledTags: 0 
12-17 10:06:52.590: W/Trace(826): Unexpected value from nativeGetEnabledTags: 0 
12-17 10:06:52.590: W/Trace(826): Unexpected value from nativeGetEnabledTags: 0 
12-17 10:06:52.680: I/ActivityThread(826): Pub com.google.android.gms.plus;com.google.android.gms.plus.action: com.google.android.gms.plus.provider.PlusProvider 
12-17 10:06:52.740: W/Trace(826): Unexpected value from nativeGetEnabledTags: 0 
12-17 10:06:52.740: W/Trace(826): Unexpected value from nativeGetEnabledTags: 0 
12-17 10:06:52.760: W/Trace(826): Unexpected value from nativeGetEnabledTags: 0 

później poznałem, że tych wersji Nie mogę wykonać emulatora, więc próbowałem go wykonać dwoma urządzeniami jeden jest Sony Xperia w wersji Android 2.3.7 i Samsung galaxy zakładki Android wersji 4.1.1 i są to moje wyjścia

12-17 16:24:48.965: I/dalvikvm(9088): Could not find method  com.example.apv.MainActivity.getFragmentManager, referenced from method com.example.apv.MainActivity.onCreate 
    12-17 16:24:48.965: W/dalvikvm(9088): VFY: unable to resolve virtual method 3460: Lcom/example/apv/MainActivity;.getFragmentManager()Landroid/app/FragmentManager; 
    12-17 16:24:48.965: D/dalvikvm(9088): VFY: replacing opcode 0x6e at 0x0009 
    12-17 16:24:48.965: D/dalvikvm(9088): VFY: dead code 0x000c-0065 in Lcom/example /apv/MainActivity;.onCreate (Landroid/os/Bundle;)V 
     12-17 16:24:49.066: D/AndroidRuntime(9088): Shutting down VM 
    12-17 16:24:49.066: W/dalvikvm(9088): threadid=1: thread exiting with uncaught exception (group=0x4001d578) 
     12-17 16:24:49.086: E/AndroidRuntime(9088): FATAL EXCEPTION: main 
     12-17 16:24:49.086: E/AndroidRuntime(9088): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.apv/com.example.apv.MainActivity}: android.view.InflateException: Binary XML file line #2: Error inflating class fragment 
     12-17 16:24:49.086: E/AndroidRuntime(9088): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1659) 
       12-17 16:24:49.086: E/AndroidRuntime(9088): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1675) 
      12-17 16:24:49.086: E/AndroidRuntime(9088): at android.app.ActivityThread.access$1500(ActivityThread.java:121) 
      12-17 16:24:49.086: E/AndroidRuntime(9088): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:943) 
      12-17 16:24:49.086: E/AndroidRuntime(9088): at android.os.Handler.dispatchMessage(Handler.java:99) 
      12-17 16:24:49.086: E/AndroidRuntime(9088): at android.os.Looper.loop(Looper.java:138) 
      12-17 16:24:49.086: E/AndroidRuntime(9088): at android.app.ActivityThread.main(ActivityThread.java:3701) 
      12-17 16:24:49.086: E/AndroidRuntime(9088): at java.lang.reflect.Method.invokeNative(Native Method) 
     12-17 16:24:49.086: E/AndroidRuntime(9088): at java.lang.reflect.Method.invoke(Method.java:507) 
      12-17 16:24:49.086: E/AndroidRuntime(9088):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:878) 
      12-17 16:24:49.086: E/AndroidRuntime(9088): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:636) 
      12-17 16:24:49.086: E/AndroidRuntime(9088): at dalvik.system.NativeStart.main(Native Method) 
      12-17 16:24:49.086: E/AndroidRuntime(9088): Caused by: android.view.InflateException: Binary XML file line #2: Error inflating class fragment 
      12-17 16:24:49.086: E/AndroidRuntime(9088): at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:581) 
       12-17 16:24:49.086: E/AndroidRuntime(9088): at android.view.LayoutInflater.inflate(LayoutInflater.java:386) 
       12-17 16:24:49.086: E/AndroidRuntime(9088): at android.view.LayoutInflater.inflate(LayoutInflater.java:320) 
       12-17 16:24:49.086: E/AndroidRuntime(9088): at android.view.LayoutInflater.inflate(LayoutInflater.java:276) 
       12-17 16:24:49.086: E/AndroidRuntime(9088): at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:207) 
       12-17 16:24:49.086: E/AndroidRuntime(9088): at android.app.Activity.setContentView(Activity.java:1657) 
       12-17 16:24:49.086: E/AndroidRuntime(9088): at com.example.apv.MainActivity.onCreate(MainActivity.java:20) 
       12-17 16:24:49.086: E/AndroidRuntime(9088): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047) 
       12-17 16:24:49.086: E/AndroidRuntime(9088): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1623) 
        12-17 16:24:49.086: E/AndroidRuntime(9088): ... 11 more 
      12-17 16:24:49.086: E/AndroidRuntime(9088): Caused by: java.lang.ClassNotFoundException: android.view.fragment in loader dalvik.system.PathClassLoader[/data/app/com.example.apv-1.apk] 
       12-17 16:24:49.086: E/AndroidRuntime(9088): at dalvik.system.PathClassLoader.findClass(PathClassLoader.java:240) 
       12-17 16:24:49.086: E/AndroidRuntime(9088): at java.lang.ClassLoader.loadClass(ClassLoader.java:551) 
       12-17 16:24:49.086: E/AndroidRuntime(9088):  at java.lang.ClassLoader.loadClass(ClassLoader.java:511) 
        12-17 16:24:49.086: E/AndroidRuntime(9088): at android.view.LayoutInflater.createView(LayoutInflater.java:471) 
        12-17 16:24:49.086: E/AndroidRuntime(9088): at android.view.LayoutInflater.onCreateView(LayoutInflater.java:549) 
       12-17 16:24:49.086: E/AndroidRuntime(9088): at com.android.internal.policy.impl.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:66) 
       12-17 16:24:49.086: E/AndroidRuntime(9088):  at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:568) 
        12-17 16:24:49.086: E/AndroidRuntime(9088): ... 19 more 

mógłby ktoś zasugerować mi jak, aby to zrobić i dać mi jakieś linki nowa wersja API tutoriali V2 mapach Google i kilka przykładów linki Proszę mi pomóc

+0

Wprowadź wcięcie poprawnie, aby uczynić go bardziej czytelnym. I sprawdź https://github.com/apacha/maps_demo na przykład z minimalistycznymi mapami. Aby uzyskać lepsze przykłady, zobacz "Android SDK \ dodatki \ google \ google_play_services \ samples \ maps' –

Odpowiedz

0

Koniecznie wymienić swoją główną działalność jako deklarujesz to w manifeście:

Caused by: java.lang.ClassNotFoundException: com.example.apv.MyMapActivity 

Może problem z nazewnictwem pakietów? Opublikuj całą MyMapActivity, nie tylko onCreate.

+0

Zaktualizowałem, że jeden – bapatla

+0

uprawnienia dostępu do mapy muszą zaczynać się od nazwy twojego pakietu. Zastąp '' z ' ' –

-5

Jeśli chcesz użyć fragmenty następnie swoją aktywność tj swój MainActivity powinien wystawać FragmentActivity

+0

Niepoprawnie. Dokumenty Google dla Map wyraźnie stanowią inaczej. –

0

Podany kod zawiera błędy. Twoja nazwa aktywności to MainActivity, ale w pliku manifestu jedyne zadeklarowane działanie ma nazwę MyMapActivity. Również plik manifestu nie ma otwierającego znacznika aplikacji.

Poprawiając te dwa błędy, uruchomiłem Twój kod i otrzymałem wyjątek, o którym wspomniałeś. Naprawiłem problem, dodając projekt biblioteki usług Google Play.Myślę, że zapomniałeś dodać to lub nie zostało ono poprawnie dodane. Możesz znaleźć szczegóły na ten temat w dokumentacji programisty mapy google v2.

Aby to sprawdzić, kliknij prawym przyciskiem myszy na projekcie i przejdź do właściwości. Następnie wybierz Androida od lewej. U dołu tej strony znajdziesz tabelę projektów bibliotecznych. Upewnij się, że projekt biblioteki usług Google Play znajduje się na liście i ma zielony znak. Jeśli go nie ma, dodaj go, klikając odpowiedni przycisk "Dodaj ...".

Niekiedy środowisko Eclipse nie może dodać projektu biblioteki, który nie znajduje się w tym samym obszarze roboczym projektu. Jeśli tak jest w Twoim przypadku, utrzymuj usługi Google Play i swój projekt w tym samym obszarze roboczym, a następnie spróbuj ponownie.

0

Zobacz ten film instruktażowy youtube. Jest przeznaczony dla początkujących i pomoże Ci w stworzeniu prostej aplikacji Map Google V2 od podstaw youtube link. A jeśli chodzi o korzystanie z Google Maps V2 na emulatorze Zaćmienie, zobacz tę odpowiedź: Running Google Maps v2 on emulator

Powiązane problemy