2

我在 Google Maps Android API v2 中使用了 MapFragment。它工作正常。

但是当我使用 MapView 时。它显示空白。我不知道会发生什么。

我的活动

package com.example.MapView;

import android.app.Activity;
import android.os.Bundle;

public class MyActivity extends Activity {
    /**
     * Called when the activity is first created.
     */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
    }

}
4

3 回答 3

0

你是什​​么意思空?如果你得到一个只有空网格的空白地图,通常这意味着你的 API 密钥是错误的。您是否在没有获得新的 api 密钥的情况下切换计算机或开始使用新的密钥库签署您的应用程序?

于 2013-02-28T14:53:06.770 回答
0

https://developers.google.com/maps/documentation/android/map#mapview

该类的用户必须将所有 Activity 生命周期方法——例如 onCreate()、onDestroy()、onResume() 和 onPause()——转发给 MapView 类中的相应方法。

您需要转发这些调用,以便视图有机会呈现地图。

于 2015-01-18T01:44:05.370 回答
0

对我来说,解决方案是将所有必要的生命周期方法从包含 MapView 的 Fragment 转发到 MapView 中的相应方法。就我而言,在 onCreate()创建 MapView 后,我在onCreateView()片段布局内将 MapView 动态添加到 FrameLayout 中。

public class MapFragment extends Fragment {

private MapView mapView;

    @Override
    public void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        mapView = new MapView(requireContext()); // obtain the mapView before calling .onCreate() on it.
        mapView.onCreate(savedInstanceState);
    }

    @Override
    public View onCreateView(final LayoutInflater inflater, ViewGroup container,
                          Bundle savedInstanceState) {
        View rootView = inflater.inflate(R.layout.fragment_map, null, false);
        mapContainer = (FrameLayout) rootView.findViewById(R.id.map_container);
        mapContainer.removeAllViews();
        mapContainer.addView(mapView);
        return rootView;
    }

    @Override
    public void onStart() {
        super.onStart();
        if (mapView != null) {
            mapView.onStart();
        }
    }

    @Override
    public void onResume() {
        super.onResume();
        if (mapView != null) {
            mapView.onResume();
        }
    }

    @Override
    public void onPause() {
        super.onPause();
        if (mapView != null) {
            mapView.onPause();
        }
    }

    @Override
    public void onStop() {
        super.onStop();
        if (mapView != null) {
            mapView.onStop();
        }
    }

    @Override
    public void onDestroy() {
        super.onDestroy();
        if (mapView != null) {
            mapView.onDestroy();
        }
    }

    @Override
    public void onSaveInstanceState(Bundle outState) {
        super.onSaveInstanceState(outState);
        if (mapView != null) {
            mapView.onSaveInstanceState(outState);
        }
    }

    @Override
    public void onLowMemory() {
        super.onLowMemory();
        if (mapView != null) {
            mapView.onLowMemory();
        }
    }
}

阅读https://developers.google.com/maps/documentation/android-sdk/reference/com/google/android/libraries/maps/MapView了解更多详情。

于 2022-01-20T11:23:21.253 回答