首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > 移动开发 >

重写ItemizedOverlay onTap方法实现覆盖物点击弹出提示框遇到相关有关问题

2014-04-19 
重写ItemizedOverlay onTap方法实现覆盖物点击弹出提示框遇到相关问题目前遇到问题:当我点击地图上的覆盖

重写ItemizedOverlay onTap方法实现覆盖物点击弹出提示框遇到相关问题
目前遇到问题:当我点击地图上的覆盖物时可以弹出提示框,但点击该覆盖物以外的地方时,最佳的用户体验是把去掉该提示框。但就是消失不了。
类似:



以前也做过类似效果,搬过来总是不行,经过1个小时的磨叽,终于找到原因了。
先看看以前做法(看清楚返回值):
弹出提示框:

@Overridepublic boolean onTap(int index){LogUtil.d("ck", "onTap1");OverlayItem item = getItem(index);createPopWindow(item);return true;}


去掉提示框:
@Overridepublic boolean onTap(GeoPoint pt, MapView mMapView){LogUtil.d("ck", "onTap2");// 点击pop以外时,把pop给删掉if (popP != null){mMapView.removeView(popP);} else if (popH != null){mMapView.removeView(popH);}return false;}


关键原因来了:
上面这种方法是对的,但是适用的场景是整个地图上只add进去一种覆盖物:
看下面代码:
 mMapView.getOverlays().add(overlay1);



如果像下面这样的话,上面的写法就达不到效果了(小弟就是这样活生生被坑害的 )
mMapView.getOverlays().add(overlay1); mMapView.getOverlays().add(overlay2);


原因呢,个人的理解吧!地图上每add进去一个覆盖物,当我们点击地图的时候,(地图的任何地方),都会触发这个方法覆盖物数量的次数,上面我add进去两个,就触发了两次,因此刚刚弹出来的提示框马上又掉了。

好了,解决方法暂时只是想到而已,还没实现,实现之后现贴上

热点排行