简体   繁体   中英

Unfortunely, Google Maps not loading after I updates Google Maps v1 to Google Maps v2 for my Android App

Note : 1. When I am using Maps V2 as a standalone application, its working fine. But When I am using Maps V2 which is a sub activity of my project getting below mentioned error logs. 2. My application works fine with Map v1 but I want to upgrade my application from Map V1 to V2

Added below mentioned code to call Map Activity : try { Class.forName(" com.google.android.gms.maps.SupportMapFragment ");Intent n=new Intent(Information.this,Gmaps.class); n.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);startActivity(n); }

Followed below steps to upgrade Google Maps v1 to v2

  1. Added google-play-services.jar into my project.
  2. Added library named_ google-play-services_lib found under the extras folder of my Android SDK setup folder
    to my Android project.
  3. updated map.xml as given below link
  4. updated Androidmanifiest.xml as given below link

http://javapapers.com/android/android-show-current-location-on-map-using-google-maps-api/ http://www.vogella.com/tutorials/AndroidGoogleMaps/article.html

My map activity classes

public class Information extends Activity
{
    @Override
    protected void onCreate(Bundle savedInstanceState) 
    {
        Crittercism.init(getApplicationContext(), "CRITTERCISM_APP_ID");
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);     
        playInformation();        

    }//oncreate
    private void playInformation(){
        try{
                Class.forName("com.google.android.gms.maps.SupportMapFragment");
                Intent n=new Intent(Information.this,Gmaps.class);
                n.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
                startActivity(n);
            }catch(Exception e){
                e.printStackTrace();
                setContentView(R.layout.error);
                TextView tv = (TextView)findViewById(R.id.txtError);
                tv.setText("Maps Does Not Supported By This Device");
                tv.setTextSize(26);
            }
    }
}

public class Gmaps extends FragmentActivity {

    // Google Map
    private GoogleMap googleMap;

    private Marker marker;

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

        try {
            // Loading map
            initilizeMap();

            // Changing map type
            googleMap.setMapType(GoogleMap.MAP_TYPE_NORMAL);

            // Showing / hiding your current location
            googleMap.setMyLocationEnabled(true);

            // Enable / Disable zooming controls
            googleMap.getUiSettings().setZoomControlsEnabled(false);

            // Enable / Disable my location button
            googleMap.getUiSettings().setMyLocationButtonEnabled(true);

            // Enable / Disable Compass icon
            googleMap.getUiSettings().setCompassEnabled(true);

            // Enable / Disable Rotate gesture
            googleMap.getUiSettings().setRotateGesturesEnabled(true);

            // Enable / Disable zooming functionality
            googleMap.getUiSettings().setZoomGesturesEnabled(true);

            double lat=12.9667; double lon=77.5667;

             // Adding a marker
            addMarker(googleMap, lat, lon);

        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    @Override
    protected void onResume() {
        super.onResume();
        initilizeMap();
    }

    /**
     * function to load map If map is not created it will create it for you
     * */
    private void initilizeMap() {
        if (googleMap == null) {
            //googleMap = ((MapFragment) getFragmentManager().findFragmentById(R.id.map)).getMap();
             googleMap = ((SupportMapFragment)getSupportFragmentManager().findFragmentById(R.id.map)).getMap();

            // check if map is created successfully or not
            if (googleMap == null) {
                Toast.makeText(getApplicationContext(),
                        "Sorry! unable to create maps", Toast.LENGTH_SHORT).show();
            }
        }
    }

    public void addMarker(GoogleMap googleMap, double lat, double lon)
    {

        if (marker != null) {
            marker.remove();
        }

        // Adding a marker
        MarkerOptions myMarker = new MarkerOptions().position(
                new LatLng(lat, lon))
                .title("Hello Bengaluru ");

        // changing marker color
        myMarker.icon(BitmapDescriptorFactory
                .defaultMarker(BitmapDescriptorFactory.HUE_RED));

        marker = googleMap.addMarker(myMarker);

        // Move the camera to last position with a zoom level
        CameraPosition cameraPosition = new CameraPosition.Builder()
                    .target(new LatLng(lat, lon)).zoom(16).build();

        googleMap.animateCamera(CameraUpdateFactory
                    .newCameraPosition(cameraPosition));
    }
}

I am using maps as a sub-activity for my app and after implementing above code getting below given error logs

********
11-10 20:03:42.659: W/dalvikvm(9654): Unable to resolve superclass of Lcom/google/android/gms/maps/SupportMapFragment; (168)
11-10 20:03:42.659: W/dalvikvm(9654): Link of class 'Lcom/google/android/gms/maps/SupportMapFragment;' failed
11-10 20:03:42.659: W/System.err(9654): java.lang.ClassNotFoundException: com.google.android.gms.maps.SupportMapFragment
11-10 20:03:42.659: W/System.err(9654): at java.lang.Class.classForName(Native Method)
11-10 20:03:42.659: W/System.err(9654): at java.lang.Class.forName(Class.java:217)
11-10 20:03:42.659: W/System.err(9654): at java.lang.Class.forName(Class.java:172)
11-10 20:03:42.669: W/System.err(9654): at com.example.myApp.Information.playInformation(Information.java:594)
11-10 20:03:42.669: W/System.err(9654): at com.example.myApp.Information.onCreate(Information.java:294)
11-10 20:03:42.669: W/System.err(9654): at android.app.Activity.performCreate(Activity.java:4470) 
11-10 20:03:42.669: W/System.err(9654): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1053)
11-10 20:03:42.669: W/System.err(9654): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1934)
11-10 20:03:42.669: W/System.err(9654): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1995)
11-10 20:03:42.669: W/System.err(9654): at android.app.ActivityThread.access$600(ActivityThread.java:128)
11-10 20:03:42.669: W/System.err(9654): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1161)
11-10 20:03:42.669: W/System.err(9654): at android.os.Handler.dispatchMessage(Handler.java:99)
11-10 20:03:42.669: W/System.err(9654): at android.os.Looper.loop(Looper.java:137)
11-10 20:03:42.669: W/System.err(9654): at android.app.ActivityThread.main(ActivityThread.java:4517)
11-10 20:03:42.669: W/System.err(9654): at java.lang.reflect.Method.invokeNative(Native Method) 
11-10 20:03:42.669: W/System.err(9654): at java.lang.reflect.Method.invoke(Method.java:511)
11-10 20:03:42.669: W/System.err(9654): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:993)
11-10 20:03:42.669: W/System.err(9654): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:760)
11-10 20:03:42.669: W/System.err(9654): at dalvik.system.NativeStart.main(Native Method)
11-10 20:03:42.669: W/System.err(9654): Caused by: java.lang.NoClassDefFoundError: com/google/android/gms/maps/SupportMapFragment
11-10 20:03:42.679: W/System.err(9654): ... 19 more
11-10 20:03:42.679: W/System.err(9654): Caused by: java.lang.ClassNotFoundException: com.google.android.gms.maps.SupportMapFragment
11-10 20:03:42.679: W/System.err(9654): at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:61)
11-10 20:03:42.679: W/System.err(9654): at java.lang.ClassLoader.loadClass(ClassLoader.java:501) 
11-10 20:03:42.679: W/System.err(9654): at java.lang.ClassLoader.loadClass(ClassLoader.java:461) 
11-10 20:03:42.679: W/System.err(9654): ... 19 more****** 
------------------------------------------------------------------------**

Add the below permission in your manifest file in your <application>

<uses-library android:name="com.google.android.maps"/>

If you still have issues in adding your map component please refer the tutorial to work with map API v2 directly as it is pretty straight forward.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM