关于百度地图使用的一个问题总结

来源:互联网 发布:9.3.3cydia数据库红字 编辑:程序博客网 时间:2024/05/17 04:37

最近在写地图,开始用的百度,因为一直有问题,所以发了个提问

http://topic.csdn.net/u/20120729/22/24df850b-c2d2-4b7b-b39f-b0d591d26dcd.html?seed=263996862&r=79263713#r_79263713

结果还是没有人解决我的问题,因为来回切换几次地图就白板了,这个是百度地图本身的一个bug,也在网上找过办法,

 

 

本帖最后由 尘封|☆ 于 2012-4-26 16:02 编辑

无论是谷歌地图还是百度地图,都需要继承MapActivity, 由于我目前做的是一个平板项目,该项目显示的永远只有一个MainActivity, 不同的显示都是用removeView和AddView来切换,如果需要显示地图的view,那么我用下面的代码来处理:

  1. LocalActivityManager localActivityManager = ((ActivityGroup)mContext).getLocalActivityManager();                               
  2. Intent i = new Intent(mContext, BaiduMapActivity.class);                                 
  3. Window w = localActivityManager.startActivity("tag", i);                                
  4. View currentView=w.getDecorView();                                 
  5. currentView.setVisibility(View.VISIBLE);                                 
  6. currentView.setFocusableInTouchMode(true);                                
  7. ((ViewGroup) currentView).setDescendantFocusability(ViewGroup.FOCUS_AFTER_DESCENDANTS);                                 ((LinearLayout) MainActivity.getContentView()).addView(currentView);
复制代码
现在的问题是,当第一次点击百度地图的按钮,调用这段代码,显示没问题,但是第二次点击的时候,就什么都不显示了。
注意:我用谷歌地图这样处理,是不会出现这个问题的。

我研究后,将代码改成下面这样:
  1. menuList.add(new MenuBean(null, res.getString(R.string.m_manage_baidu_map), R.drawable.uer_info, new PerformListener() {                                
  2. int t=10;                        
  3. public void performAction() {                                
  4. t++;                                
  5. LocalActivityManager localActivityManager = ((ActivityGroup)mContext).getLocalActivityManager();                                
  6. Intent i = new Intent(mContext, BaiduMapActivity.class);                                 
  7. Window w = localActivityManager.startActivity("tag"+t, i);                                 
  8. View currentView=w.getDecorView();                                 
  9. currentView.setVisibility(View.VISIBLE);                                 
  10. currentView.setFocusableInTouchMode(true);                                
  11. ((ViewGroup) currentView).setDescendantFocusability(ViewGroup.FOCUS_AFTER_DESCENDANTS);                                
  12. ((LinearLayout) MainActivity.getContentView()).addView(currentView);                        
  13. }               
  14. }));
复制代码
重复点击,显示就没问题了。

但我比较郁闷,这样处理的话,Window w = localActivityManager.startActivity("tag"+t, i); 这个tag参数岂不没有缓存的意义了,这样每次都会create一个新的activity,这个不是很好吧。

大家帮忙看看,百度地图为什么会出现这个问题呢,有没有什么解决方法呢??
拜谢!!!

http://www.eoeandroid.com/forum.php?mod=viewthread&tid=169359&highlight=

 

 

 

 

 

 

试了一下不行,还是改成了google地图

 

后来又同学发现此问题产生的原因是我在onstop  里面把bmapmanager销毁了,所以再次点击的时候会白板 ,销毁这个百度manager最好在程序退出的时候进行

原创粉丝点击