高德地图MapView和其他SurfaceView在同一个Activity中重叠显示透明问题

之前遇到的问题是这样的:我要在摄像机预览界面加一个高德地图进来,第一次地图显示出来了,但是再次进入的话地图就透明了,,,

原因:surfaceview不能叠加,否则就会有一方被隐掉

解决方法:将高德地图的MapView替换成TextureMapView


一个显示地图的视图(View)。它负责从服务端获取地图数据。当屏幕焦点在这个视图上时,它将会捕捉键盘事件(如果手机配有实体键盘)及屏幕触控手势事件。 使用这个类必须按照它的生命周期进行操控,你必须参照以下方法onCreate(Bundle)、 onResume()、onPause()、onDestroy()、onSaveInstanceState(Bundle)、onLowMemory() 当MapView初始化完成后,用户可以通过getMap()方法获得一个AMap 对象。如果MapView 没有初始成功,则执行getMap()将返回null。 如果要求程序在比较低版本的Android 上运行,使用这个类将比MapFragment 或SupportMapFragment 类更加合适。



一个显示地图的视图(View)。它负责从服务端获取地图数据。当屏幕焦点在这个视图上时,它将会捕捉键盘事件(如果手机配有实体键盘)及屏幕触控手势事件。 使用这个类必须按照它的生命周期进行操控,你必须参照以下方法onCreate(Bundle)、 onResume()、onPause()、onDestroy()、onSaveInstanceState(Bundle)、onLowMemory() 当MapView初始化完成后,用户可以通过getMap()方法获得一个AMap 对象。如果MapView 没有初始成功,则执行getMap()将返回null。 如果要求程序在比较低版本的Android 上运行,使用这个类将比TextureMapFragment 或TextureSupportMapFragment 类更加合适。
它和MapView的区别在于,TextureMapView是一个TextureView而MapView是一个GLSurfaceView。

所以TextureMapView 可以和其他的GlSurfaceView(比如相机)共存不会出现穿透现象,也可以放在ViewPager中不会出现滑动黑边现象。


注:另外说一下百度地图也会出现这样的问题,好像也可以这样解决(没试过):

GLSurfaceView glview = (GLSurfaceView) (mMapView.getChildAt(0));
        if (glview != null) {
            glview.setZOrderOnTop(true);
            //glview.setZOrderMediaOverlay(true); // 多添加这一句,就可以显示放大缩小按钮了。
        }


  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值