android百度地图添加覆盖,Android在一个activity中不同的fragment中加载百度地图时,百度地图重合叠加覆盖的解决方案...

本文探讨了在Android应用中遇到的Fragment间切换时,两个全屏百度地图重叠的问题。作者尝试了通过hide和show方法来切换Fragment,但未能解决问题。地图在切换时部分区域未显示,被另一个Fragment的地图遮挡。尝试onHiddenChanged和onAttachFragment方法也无法解决此问题。问题根源在于GLSurfaceView的处理。百度地图提供了TextureMapView作为解决方案,它能解决地图重叠和闪屏问题,特别是在Android 4.0以上系统。然而,使用TextureMapView可能在用户快速切换时引发问题。目前,最佳实践是开启硬件加速权限以优化体验。同时,TextureMapView还解决了其他相关问题,如地图在TabHost切换或滚动时的闪屏和白边问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

释放双眼,带上耳机,听听看~!

1.首先引用百度论坛上的一个例子,地址为:

http://bbs.lbsyun.baidu.com/forum.php?mod=viewthread&tid=88398

2.问题主要表现在

2.1 tabOneFragment中有百度地图,tab2中也有百度地图,切均为全屏显示,为了保存在fragment切换过程中,记录保存当前fragment的状态和一些控件的值,采用了 hide和show的加载方式来切换fragment,这里replace的方法来切换fragment达不到预期的效果。

2.2刚开始加载第一页的fragemnt时,地图可以正常加载显示,切换到第二个fragment中时,地图区域的部分没有显示,被第一个fragemnt的百度地图遮挡住。查阅了各个方法都不能有效的解决这个问题。

2.2.1 onHiddenChanged是fragemnt显示和隐藏时一定会调用的方法,这里用setVisibility的方法,此方法不能够解决问题

/**

* fragment显示或者隐藏时调用的方法

*/

@Override

public void onHiddenChanged(boolean hidden) {//本页面是否被隐藏,重新切换回来之后为false

super.onHiddenChanged(hidden);

//此处可以进行刷新数据的处理

if(hidden==true){

mMapView.setVisibility(View.GONE);

}else{

mMapView.setVisibility(View.VISIBLE);

}

}

2.2.2 在 Mainactivity中重写onAttachment的方法也不能解决问题。

@Override

public void onAttachFragment(Fragment fragment) {

super.onAttachFragment(fragment);

if (firstFragment == null && fragment instanceof TabOneFragment) {

firstFragment = (TabOneFragment)fragment;

}else if (secondFragment == null && fragment instanceof TabTwoFragment){

secondFragment = (TabTwoFragment)fragment;

}else if (thirdFragment == null && fragment instanceof TabThreeFragment) {

thirdFragment = (TabThreeFragment)fragment;

}else if (fourFragment == null && fragment instanceof TabFourFragment){

fourFragment=(TabFourFragment)fragment;

}

}

2.2.3 用replace的方法切换fragment可以解决地图重叠的问题,不过地图会重新加载,执行生命周期,会出现问题1:屏幕闪黑一下再将地图加载出来 问题2:不能保存之前进行过的一些地图上的操作。

3原因

这个压盖问题,是系统GLSurfaceView本身的问题,用两个GLSurfaceView实验也是这样,我这里加载两个地图容器一个是百度地图,一个是arcgis的地图……

4解决方案:

百度地图新增了TextureMapView可以解决,这是android4.0以上给的解决方案,最好的话开启硬件加速的权限,否则用户切换过快的话,可能会出现一些问题。

引用

android:id="@+id/bmapView"

android:layout_width="fill_parent"

android:layout_height="fill_parent"

android:layout_below="@+id/tab1_include"

android:clickable="true" />

5更好的解决方案暂时还没有

6.同样TexturMapView的使用情况还有如下,也能解决一些其他问题:

TextureMapView也解决了MapView基于系统GLSurfaceView导致tabhost切换或滚动闪屏、白边等问题。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值