首页 / 浏览问题 / 移动GIS / 问题详情
android二维地图返回黑屏报错
122EXP 2020年06月22日

使用产品:SuperMap iMobile 9D(2019)(V9.1.2)SuperMap iMobile 9D(2019) SP2 for Android(精简绿色包) 操作系统:win10 x64

数据类型: 文件型

使用过程中从地图页面跳转到其他页面再返回地图页时候 经常报下面的错误,这样地图会黑一下,是什么原因?

06-22 11:20:59.399 13457-13553/com.zzyc E/SurfaceHolder: Exception locking surface
                                                         java.lang.IllegalStateException: Surface has already been released.
                                                             at android.view.Surface.checkNotReleasedLocked(Surface.java:523)
                                                             at android.view.Surface.lockCanvas(Surface.java:297)
                                                             at android.view.SurfaceView$4.internalLockCanvas(SurfaceView.java:839)
                                                             at android.view.SurfaceView$4.lockCanvas(SurfaceView.java:807)
                                                             at com.supermap.mapping.dyn.DynamicView.d(DynamicView.java:362)
                                                             at com.supermap.mapping.dyn.DynamicView.run(DynamicView.java:646)
                                                             at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:423)
                                                             at java.util.concurrent.FutureTask.run(FutureTask.java:237)
                                                             at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113)
                                                             at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588)
                                                             at java.lang.Thread.run(Thread.java:833)

1个回答

您好,在跳转到其他页面时,你有对地图的相关资源进行释放吗?您那边可以使用动态添加MapView来解决跳转时会出现短暂黑屏的问题,可以参考demo:

动态添加地图控件(Frequentlyopenmap)
9,242EXP 2020年06月22日

我没有释放 没有关闭页面只是跳转页面再回来,您的意思是说跳转后要在

@Override
protected void onStop() {
mapControl.getMap().close();
if (workspace.getDatasources().getCount() > 0) {
    workspace.close();

    workspace.dispose();
    workspace=null;
}
linearLayout.removeView(mapView);
mapView=null;
if (mapControl!=null){
    mapControl.dispose();
    mapControl=null;
}
这里释放吗?都关掉。然后在
@Override
public void onResume() {
protected void openMap(){
    if (mapView==null) {
        mapView = initMapView(this);
        linearLayout.addView(mapView);

        mapControl = mapView.getMapControl();
        WorkspaceConnectionInfo info = new WorkspaceConnectionInfo();
        info.setType(WorkspaceType.SMWU);
        info.setServer(RootPath + "/SampleData/City/Changchun.smwu");
        workspace = new Workspace();
        workspace.open(info);
        mapControl.getMap().setWorkspace(workspace);
        String mapname = workspace.getMaps().get(0);
        mapControl.getMap().open(mapname);
    }
    else {
        Toast.makeText(this,"已经打开地图",Toast.LENGTH_SHORT).show();
    }

}
这里再添加吗?
在页面切换的时候不需要对地图的相关资源进行释放,直接进行跳转就可以了,你看一下你的代码是不是在跳转的时候对地图进行了关闭释放操作
没有关闭的操作。
啥也没干正常跳转 回来就会黑一下
您好,参考一下这个demo:链接:https://pan.baidu.com/s/1dEatRb2vX88qkn90RPH8Dg
提取码:qy0u

是必须用10.0.1版本吗?我用的912,还是有这个问题。我只用了二维地图没用三维 首页是二维地图 点击marker随便跳转页面回来 就会报错

后来我设置了

Environment.setOpenGLMode(false);
这样返回就不回黑屏了 但是后台还是报错 而且发现魅族手机 放大地图的话同时会对地图上加的
addCallout这个图片也放大 并且不会恢复原来Callout 的大小。
这个报错是不影响的使用的。放大地图callout也会放大在其他设备上会出现这个问题吗?

小米华为没发现问题 魅族不设置

Environment.setOpenGLMode(false);这个的话 没问题 
在使用的时候建议开启openGL:Environment.setOpenGLMode(true);,使用我的demo还是会出现黑屏吗
...