10

Hi mọi người tôi biết rằng bản đồ google đã không dùng phiên bản API v1 trước đó của nó và đã giới thiệu phiên bản mới của google maps API v2. Tôi đã thử một ví dụ bằng cách làm theo một số liên kết trong google bất kỳ cách nào tôi khá chắc chắn rằng tôi đã nhận khóa api một cách chính xác bằng cách cung cấp mã khóa băm chính xác và quản lý để có được khóa api chính xác. Bây giờ tôi quản lý để viết một số mã là tốt, nhưng khi tôi đã cố gắng để thực thi mã i am nhận được lỗi xin vui lòng giúp tôi giải quyết đây là mã của tôiCách triển khai phiên bản API mới của Google Maps v2

và tôi thậm chí đã thử các mã mẫu được cung cấp bởi dịch vụ google play một i có cùng một vấn đề

đây là mẫu mà tôi đã làm bằng cách giới thiệu một số liên kết trong google

lớp hoạt động chính

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

và cuối cùng là file manifest của tôi

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

tôi chạy ứng dụng của tôi trong giả lập của phiên bản 4.2 và mức api 17 tôi đã nhận lỗi sau

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 

sau tôi đến để biết rằng những phiên bản không thể thực hiện trong giả lập vì vậy tôi đã thử thực hiện nó với hai thiết bị một là Sony xperia u của phiên bản Android 2.3.7 và Samsung galaxy tab của phiên bản Android 4.1.1 và đây là kết quả đầu ra của tôi

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 

thể bất kỳ một xin đề nghị tôi làm thế nào để làm điều này và cho tôi một số liên kết các hướng dẫn v2 phiên bản mới API bản đồ google và một số ví dụ liên kết xin vui lòng giúp tôi

+0

Vui lòng thụt lề mã của bạn chính xác để làm cho mã dễ đọc hơn. Và hãy xem https://github.com/apacha/maps_demo để biết ví dụ về bản đồ tối giản. Để có các ví dụ tốt hơn, hãy xem 'Android SDK \ extras \ google \ google_play_services \ samples \ maps' –

Trả lời

0

Hãy chắc chắn để đặt tên cho các hoạt động chính của bạn như bạn khai báo nó trong tệp kê khai:

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

Có thể vấn đề đặt tên gói? Đăng toàn bộ MyMapActivity của bạn, không chỉ là onCreate.

+0

Tôi đã cập nhật một số – bapatla

+0

quyền truy cập bản đồ phải bắt đầu bằng tên gói của bạn. Thay thế '' với ' ' –

-5

Nếu bạn muốn sử dụng mảnh sau đó hoạt động của bạn tức là bạn MainActivity nên mở rộng FragmentActivity

+0

Không chính xác. Các tài liệu của Google cho Maps rõ ràng là khác. –

0

Mã bạn cung cấp chứa lỗi. Tên hoạt động của bạn là MainActivity nhưng trong tệp kê khai, hoạt động duy nhất bạn khai báo có tên MyMapActivity. Tệp kê khai của bạn cũng không có thẻ mở ứng dụng.

Sửa hai lỗi này, tôi đã chạy mã của bạn và nhận ngoại lệ bạn đã đề cập. Tôi đã khắc phục sự cố bằng cách thêm dự án thư viện google-play-services.Tôi nghĩ bạn đã quên thêm thông tin này hoặc nó chưa được thêm chính xác. Bạn có thể tìm thấy chi tiết về nó trong tài liệu dành cho nhà phát triển của bản đồ google v2.

Để kiểm tra điều này, hãy nhấp chuột phải vào dự án của bạn và chuyển đến các thuộc tính. Sau đó chọn Android từ bên trái. Ở cuối trang này, bạn sẽ tìm thấy bảng dự án thư viện. Đảm bảo dự án thư viện google-play-services nằm trong danh sách và có dấu màu xanh lục. Nếu nó không có ở đó, hãy thêm nó bằng cách nhấp vào nút "Thêm .." bên phải.

Đôi khi, nhật thực không thêm dự án thư viện không có trong cùng một không gian làm việc của dự án của bạn. Nếu đây là trường hợp của bạn, hãy giữ các dịch vụ google-play và dự án của bạn trong cùng một không gian làm việc và sau đó thử lại.

0

xem video hướng dẫn trên youtube này. Dành cho người mới bắt đầu và sẽ giúp bạn trong việc tạo ứng dụng Google Maps V2 đơn giản từ đầuyoutube link. Và theo như chạy Google Maps V2 trên trình mô phỏng eclipse, hãy xem câu trả lời này Running Google Maps v2 on emulator