How to implement google maps api v2 in SherlockMapActivity

1.1k Views Asked by At

I want to implement google maps api v2 because my debug key from google maps v1 doesn't work if I want to publish on Google Play Store and I can be able to get a maps V1 release key because is deprecated.

Anybody know how to implement maps api v2 in SherlockMapActivity?

Thank you in advance!

3

There are 3 best solutions below

2
Dhaval Parmar On BEST ANSWER

insted of shareLockMapActivity use SherlockMapFragment

create package name: com.actionbarsherlock.app inside of your Project not in sharelock lib.

add below class in to that package.

package com.actionbarsherlock.app;

import android.app.Activity;
import android.support.v4.app.Watson.OnCreateOptionsMenuListener;
import android.support.v4.app.Watson.OnOptionsItemSelectedListener;
import android.support.v4.app.Watson.OnPrepareOptionsMenuListener;
import com.actionbarsherlock.app.SherlockFragmentActivity;
import com.actionbarsherlock.internal.view.menu.MenuItemWrapper;
import com.actionbarsherlock.internal.view.menu.MenuWrapper;
import com.actionbarsherlock.view.Menu;
import com.actionbarsherlock.view.MenuInflater;
import com.actionbarsherlock.view.MenuItem;
import com.google.android.gms.maps.SupportMapFragment;

public class SherlockMapFragment extends SupportMapFragment implements
        OnCreateOptionsMenuListener, OnPrepareOptionsMenuListener,
        OnOptionsItemSelectedListener {
    private SherlockFragmentActivity mActivity;

    public SherlockFragmentActivity getSherlockActivity() {
        return mActivity;
    }

    @Override
    public void onAttach(Activity activity) {
        if (!(activity instanceof SherlockFragmentActivity)) {
            throw new IllegalStateException(getClass().getSimpleName()
                    + " must be attached to a SherlockFragmentActivity.");
        }
        mActivity = (SherlockFragmentActivity) activity;

        super.onAttach(activity);
    }

    @Override
    public void onDetach() {
        mActivity = null;
        super.onDetach();
    }

    @Override
    public final void onCreateOptionsMenu(android.view.Menu menu,
            android.view.MenuInflater inflater) {
        onCreateOptionsMenu(new MenuWrapper(menu),
                mActivity.getSupportMenuInflater());
    }

    @Override
    public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
        // Nothing to see here.
    }

    @Override
    public final void onPrepareOptionsMenu(android.view.Menu menu) {
        onPrepareOptionsMenu(new MenuWrapper(menu));
    }

    @Override
    public void onPrepareOptionsMenu(Menu menu) {
        // Nothing to see here.
    }

    @Override
    public final boolean onOptionsItemSelected(android.view.MenuItem item) {
        return onOptionsItemSelected(new MenuItemWrapper(item));
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Nothing to see here.
        return false;
    }
}

how use above class:

public class MyMapFragment extends SherlockMapFragment {

    @Override
    public void onActivityCreated(Bundle savedInstanceState) {
        super.onActivityCreated(savedInstanceState);

        if (getMap() != null) {
            Log.e(getClass().getSimpleName(), "Map ready for use!");
            CameraUpdate center = CameraUpdateFactory.newLatLng(new LatLng(
                    23.0333, 72.6167));
            CameraUpdate zoom = CameraUpdateFactory.zoomTo(10);

            getMap().moveCamera(center);
            getMap().animateCamera(zoom);

            addMarker(getMap(), Double.parseDouble(latlong[0]),
                        Double.parseDouble(latlong[1]), name, "" + sni);



        }

    }

    private void addMarker(GoogleMap map, double lat, double lon,
            String string, String string2) {
        map.addMarker(new MarkerOptions()
                .position(new LatLng(lat, lon))
                .title(string)
                .snippet(string2)
                .icon(BitmapDescriptorFactory
                        .defaultMarker(BitmapDescriptorFactory.HUE_AZURE)));
    }
}

add above fragment in any Activity like below

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent" android:layout_height="match_parent">
    <fragment class="com.dj_android.MyMapFragment"
            android:id="@+id/titles"
            android:layout_width="match_parent" android:layout_height="match_parent" />
</FrameLayout>

Edited:

Please learn what is fragment.

how use fragment in Activity.

1
Shadow On

You cant. As per documentation, Google map v1 key no longer been maintained and moreover Sherlock map jar also been deprecated. https://github.com/JakeWharton/ActionBarSherlock-Plugin-Maps

Switch over to Google map v2 and use release key when you sign your apk and debug key for unsigned apk.

2
Rohan Kandwal On

deprecated means that they are no longer supported. Google has rolled out Google Maps V2 this year, april month, if not mistaken. From now all the new apps that need google maps must use google maps v2. Although apps using V1 key will continue to work. But new apps must use v2. check google site Google Maps V2 . Also if you want a beginners tutorial on Google Maps v2 then see this youtube tutorial youtube link.

Press check mark if this solved your question or mark it useful if it helped you in anyway.