MapView 地图未在运行时呈现 Screenshot Attached

Posted

技术标签:

【中文标题】MapView 地图未在运行时呈现 Screenshot Attached【英文标题】:MapView Map is not rendering on runtime Screenshot AttachedMapView 地图未在运行时呈现 Screenshot Attached 【发布时间】:2020-07-27 17:21:46 【问题描述】:

我正在尝试在 Fragment 中添加 MapView,我的应用运行良好但无法加载地图详细信息或地理位置。请在提到的屏幕截图中找到详细信息。谷歌代码可以工作,但不能在 MapView 中加载地图。 我还提到了下面我尝试执行但遇到运行时问题的代码。

enter image description here

NearbyFragment.java

public class NearbyFragment extends Fragment implements OnMapReadyCallback 

private MapView mMapView;

private static final String MAPVIEW_BUNDLE_KEY = "MapViewBundleKey";


View rootNearby;

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) 
    rootNearby = inflater.inflate(R.layout.fragment_nearby, container, false);
    // Inflate the layout for this fragment

    initGoogleMaps(savedInstanceState);

    return rootNearby;


private void initGoogleMaps(Bundle savedInstanceState) 
    Bundle mapViewBundle = null;
    if (savedInstanceState != null) 
        mapViewBundle = savedInstanceState.getBundle(MAPVIEW_BUNDLE_KEY);
    
    mMapView = (MapView) rootNearby.findViewById(R.id.mapView_NearbyMap);
    mMapView.onCreate(mapViewBundle);

    mMapView.getMapAsync(this);



@Override
public void onSaveInstanceState(Bundle outState) 
    super.onSaveInstanceState(outState);

    Bundle mapViewBundle = outState.getBundle(MAPVIEW_BUNDLE_KEY);
    if (mapViewBundle == null) 
        mapViewBundle = new Bundle();
        outState.putBundle(MAPVIEW_BUNDLE_KEY, mapViewBundle);
    

    mMapView.onSaveInstanceState(mapViewBundle);


@Override
public void onResume() 
    super.onResume();
    mMapView.onResume();


@Override
public void onStart() 
    super.onStart();
    mMapView.onStart();


@Override
public void onStop() 
    super.onStop();
    mMapView.onStop();


@Override
public void onMapReady(GoogleMap map) 
    map.addMarker(new MarkerOptions().position(new LatLng(0, 0)).title("Marker"));

    if (ActivityCompat.checkSelfPermission(getActivity(), Manifest.permission.ACCESS_FINE_LOCATION)
            != PackageManager.PERMISSION_GRANTED) 
        return;
    
    map.setMyLocationEnabled(true);


@Override
public void onPause() 
    mMapView.onPause();
    super.onPause();


@Override
public void onDestroy() 
    mMapView.onDestroy();
    super.onDestroy();


@Override
public void onLowMemory() 
    super.onLowMemory();
    mMapView.onLowMemory();

【问题讨论】:

【参考方案1】:

编辑:添加了一个更全面的答案,其中包含所有可能的问题,以便通过链接和步骤正确渲染/显示地图,有一个这里也有很好的教程。下面是解决问题的其他步骤。

按照以下步骤操作:

    验证清单 androidManifest.xml,通常这和布局可能是渲染地图的问题。它可以被称为google_maps_api.xml

    在 GoogleMaps for Android 中,您需要两个键 - 调试和发布。

    debug”键用于其他重要的地方,它也用于你 在 Eclipse 中开发应用程序。 相同的调试密钥用于 开发、测试、调试

    可以在 userhome/.android/debug.keystore 文件中找到用于签署应用程序的调试密钥。

    要为调试密钥库创建 SHA-1,请使用 JDK 安装中的 keytool 命令。

    keytool -list -v -alias androiddebugkey \ -keystore <path_to_debug_keystore>debug.keystore \ -storepass android -keypass android

    在将应用程序发布到 Market 之前,更改 android:debuggable="false"AndroidManifest.xml 并使用 你的Signed API keyhere。

    检查以使用正确的指纹,如上面的#3 keytool -list -keystore ~\.android\debug.keystore ...

    然后转到您的用户目录。在windows上清理这个旧文件到C:\Users\dev2.Tykt.org\.android并删除debug.keystoredefault.keysetTykt

    最后,在此之后,在您的项目中转到 Eclipse run a clean build 完成了!

【讨论】:

我更改了顺序,但仍然出现渲染问题。请查看屏幕截图。 @GauravBhagat 这很奇怪,它直截了当,我猜还有其他事情发生。请包含更多代码。还包括,哪个版本的谷歌地图,这是在模拟器还是你的设备中

以上是关于MapView 地图未在运行时呈现 Screenshot Attached的主要内容,如果未能解决你的问题,请参考以下文章

iOS6中的MapView在缩放地图时崩溃

Google GeoChart(Lavacharts 库)-> AddRow / AddRows 未在地图上呈现任何结果,尽管创建了值数组

Android OnLongClickListener 未在 MapView 上触发

调用百度地图API出现 error inflating class com.baidu.mapapi.map.mapview

MapView 问题 - 地图重新加载时引脚更改颜色

iphone模拟器MapView不加载,而是显示灰色瓷砖