我想实现 google maps api v2,因为如果我想在 Google Play Store 上发布,我来自 google maps v1 的调试密钥不起作用,并且我可以获得地图 V1 发布密钥,因为已弃用。
有人知道如何在 SherlockMapActivity 中实现 maps api v2 吗?
先感谢您!
我想实现 google maps api v2,因为如果我想在 Google Play Store 上发布,我来自 google maps v1 的调试密钥不起作用,并且我可以获得地图 V1 发布密钥,因为已弃用。
有人知道如何在 SherlockMapActivity 中实现 maps api v2 吗?
先感谢您!
你不能。根据文档,Google map v1 密钥不再被维护,而且 Sherlock 地图 jar 也已被弃用。 https://github.com/JakeWharton/ActionBarSherlock-Plugin-Maps
切换到 Google map v2 并在您签署您的 apk 和调试未签名 apk 的密钥时使用发布密钥。
安装了 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>
编辑:
请了解什么是片段。
deprecated意味着它们不再受支持。谷歌今年 4 月推出了谷歌地图 V2,如果没有记错的话。从现在开始,所有需要谷歌地图的新应用程序都必须使用谷歌地图 v2。尽管使用 V1 密钥的应用程序将继续工作。但新应用必须使用 v2。检查谷歌网站谷歌地图 V2。此外,如果您想要关于 Google Maps v2 的初学者教程,请查看此 youtube 教程youtube 链接。
如果这解决了您的问题,请按复选标记,或者如果它对您有帮助,请标记它有用。