在V2中获取空白的Google地图

时间:2014-09-17 11:01:59

标签: android google-maps google-maps-markers google-maps-android-api-2 mapfragment

我在我的项目中使用Google地图V2,我在baseadapter类中实例化地图(在listview中设置),

布局文件:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >

<fragment
    android:id="@+id/map"
    android:name="com.google.android.gms.maps.MapFragment"
    android:layout_width="fill_parent"
    android:layout_height="500dp"
    android:layout_margin="10dp" />

Java代码:

private void setUpMap()
{
    // Do a null check to confirm that we have not already instantiated the map.
    if (ViewHolder.mMap == null)
    {


        android.app.FragmentManager fm = ((Activity) context).getFragmentManager();

        // Try to obtain the map from the SupportMapFragment.
        ViewHolder.mMap = ((MapFragment) fm.findFragmentById(R.id.map)).getMap();

        //=======clear old marker====
        ViewHolder.mMap.clear();

        // Check if we were successful in obtaining the map.

        if (ViewHolder.mMap != null)
        {
            ViewHolder.mMap.setOnMarkerClickListener(new GoogleMap.OnMarkerClickListener()
            {
                @Override
                public boolean onMarkerClick(com.google.android.gms.maps.model.Marker marker)
                {
                    marker.showInfoWindow();
                    return true;
                }
            });
        }
        else
            Toast.makeText(context, "Unable to create Maps", Toast.LENGTH_SHORT).show();
    }
}

我已获得地图的所有已知权限。

    <permission android:name="com.the.app.rr.permission.MAPS_RECEIVE"  
android:protectionLevel="signature" />

    

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-feature
    android:glEsVersion="0x00020000"
    android:required="true" />
    <meta-data
        android:name="com.google.android.maps.v2.API_KEY"
        android:value="******_n3wx2Ga-6lBLpD1v56SXs3IIxEqyKw" />
    <meta-data
        android:name="com.google.android.gms.version"
        android:value="@integer/google_play_services_version" />

我在最近两天的工作,并检查所有,任何事情对我没有用..

来自Google的日志。

1。 I / Google Maps Android API(26592):Google Play服务包版本:5089038
2。解析Lcom / google / android / gms / location / internal / ParcelableGeofence失败;界面4023&#39; Lglm;&#39;
3。找不到类&#39; com.google.android.gms.location.internal.ParcelableGeofence&#39;,从方法gls.a中引用了
4。无法加载地图。联系Google服务器时出错这可能是一个身份验证问题(但可能是由于网络错误)。

有人可以帮忙吗?

1 个答案:

答案 0 :(得分:0)

  • 您在检查ViewHolder.mMap.clear()

  • 之前致电ViewHolder.mMap != null
  • 您是否从setUpMap致电onCreate?如果是,我会尝试将其移至onResume,以便在生命周期的后期阶段完成地图处理。

  • 如果ViewHolder.mMap == null,我会致电MapsInitializer.initialize(getActivity())以确保启动GoogleMap初始化。它没有必要,但可以提供帮助。

  • 之前我遇到过这个问题,我意识到这是由于API密钥造成的。我必须generate a fresh Android key在我的本地机器上使用调试密钥库,因为android工作室正在使用它进行构建。在我的情况下,我必须得到SHA1:

    keytool -list -v -keystore %HOMEPATH%\.android\debug.keystore

  • 另一个潜在的问题是您在Android应用中使用的Google Play服务库版本与设备或模拟器上的播放服务apk版本之间的不匹配。他们需要匹配或至少应用程序上的那个应该更少或相等。您可以通过Settings -> Apps -> Downloaded -> Google Play Services在设备或模拟器上找到Google Play服务版本。如果此版本低于您在Android应用程序中使用的库版本,我会尝试使用旧版本库。

Finding Google Play Services version