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

目前遇到问题:当我点击地图上的覆盖物时可以[color=red]弹出提示框[/color],但点击该覆盖物[color=red]以外[/color]的地方时,最佳的用户体验是把[color=red]去掉该提示框[/color]。但就是消失不了。
类似:
[img]http://dl2.iteye.com/upload/attachment/0093/6063/3b1f4d4a-ab65-30d1-a238-e9a9474c08b3.jpg[/img]


以前也做过类似效果,搬过来总是不行,经过1个小时的磨叽,终于找到原因了。
先看看以前做法(看清楚返回值):
[color=red]弹出提示框[/color]:
		@Override
public boolean onTap(int index)
{
LogUtil.d("ck", "onTap1");

OverlayItem item = getItem(index);
createPopWindow(item);

return true;
}


[color=red]去掉提示框[/color]:
@Override
public 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;
}


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



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


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

好了,解决方法暂时只是想到而已,还没实现,实现之后现贴上
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值