1

我想实现 google maps api v2,因为如果我想在 Google Play Store 上发布,我来自 google maps v1 的调试密钥不起作用,并且我可以获得地图 V1 发布密钥,因为已弃用。

有人知道如何在 SherlockMapActivity 中实现 maps api v2 吗?

先感谢您!

4

3 回答 3

3

你不能。根据文档,Google map v1 密钥不再被维护,而且 Sherlock 地图 jar 也已被弃用。 https://github.com/JakeWharton/ActionBarSherlock-Plugin-Maps

切换到 Google map v2 并在您签署您的 apk 和调试未签名 apk 的密钥时使用发布密钥。

于 2013-06-20T08:37:46.917 回答
2

安装了 shareLockMapActivity 的使用SherlockMapFragment

创建包名称:com.actionbarsherlock.app在您的项目内部而不是在共享锁库中。

将以下类添加到该包中。

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

如何使用上面的类:

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

在任何活动中添加上面的片段,如下所示

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

编辑:

请了解什么是片段

如何在 Activity 中使用片段。

于 2013-06-20T09:01:36.540 回答
0

deprecated意味着它们不再受支持。谷歌今年 4 月推出了谷歌地图 V2,如果没有记错的话。从现在开始,所有需要谷歌地图的新应用程序都必须使用谷歌地图 v2。尽管使用 V1 密钥的应用程序将继续工作。但新应用必须使用 v2。检查谷歌网站谷歌地图 V2。此外,如果您想要关于 Google Maps v2 的初学者教程,请查看此 youtube 教程youtube 链接

如果这解决了您的问题,请按复选标记,或者如果它对您有帮助,请标记它有用。

于 2013-06-20T09:04:20.687 回答