`
大头K
  • 浏览: 186285 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

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

阅读更多
目前遇到问题:当我点击地图上的覆盖物时可以弹出提示框,但点击该覆盖物以外的地方时,最佳的用户体验是把去掉该提示框。但就是消失不了。
类似:



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

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

			return true;
		}


去掉提示框
@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;
		}


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



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


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

好了,解决方法暂时只是想到而已,还没实现,实现之后现贴上
  • 大小: 93.1 KB
分享到:
评论

相关推荐

    Android学习笔记之百度地图(分条目覆盖物:ItemizedOverlay)

    创建`ItemizedOverlay`需要继承它并重写必要的方法,例如`bindToMapView()`用于绑定到地图视图,`onTap()`用于处理点击事件,以及`draw()`用于绘制覆盖物。 以下是一些关键步骤: 1. **创建自定义的`...

    ItemizedOverlay

    首先,你需要继承`ItemizedOverlay<OverlayItem>`,并重写必要的方法,如`draw()`用于在地图上绘制覆盖物,`onTap()`处理点击事件,以及`createItem(int index)`和`size()`来获取覆盖物的数量。 2. **OverlayItem*...

    使用ItemizedOverlay在mapview上创建浮动按钮

    `draw()`方法用于在地图上绘制覆盖物,`onTap()`方法用于处理点击事件,`createItem(int index)`则用于创建并返回`OverlayItem`实例。 1. **创建自定义的ItemizedOverlay子类** ```java public class ...

    Android百度地图添加覆盖物

    若要实现点击覆盖物后的操作,可以设置OnClickListener: ```java baiduMap.setOnMarkerClickListener(new BaiduMap.OnMarkerClickListener() { @Override public boolean onMarkerClick(Marker marker) { Toast...

    android实现百度地图自定义弹出窗口功能

    但是它只支持将弹出内容转化为不多于三个Bitmap,如果这个弹出窗口里想有按钮来响应点击事件,用这个就不能满足要求了,于是,看了一遍百度地图覆盖物的API,我决定用自定义View的方法来实现类似的效果,先贴一下...

    高德地图自定义点聚合图片

    1. 创建一个自定义的`Overlay`类,继承自`ItemizedOverlay<OverlayItem>`,在这个类中你需要重写`draw()`方法,绘制覆盖物。 2. 在`draw()`方法内,根据每个`OverlayItem`的位置,使用`Canvas`绘制自定义的图标。 3....

    android百度地图注释版

    ItemizedOverlay是覆盖物管理的基础类,你可以继承它并重写相关方法,实现自定义的行为。例如,点击覆盖物时弹出信息窗口,或者处理长按事件。BDMap_3中,你会看到如何结合MKSearch的结果创建具有详细信息的标注...

    Android google map自定义图层

    在这个类中,你需要重写父类的一些方法,如`onTap()`(处理点击事件)和`draw()`(绘制覆盖物)。 ```java public class MyCustomItemizedOverlay extends ItemizedOverlay<CustomOverlayItem> { public ...

    Baidu_map(百度地图)Android平台开发指南(PDF)

    关于覆盖物的实现,文档介绍了多种覆盖物的类型和使用方法,例如: - Overlay类作为覆盖物的抽象基类,用于实现自定义覆盖物。 - MyLocationOverlay类用于显示当前位置信息。 - ItemizedOverlay类用于显示分条目的...

    android 百度地图demo 在地图上划出轨迹

    - 在`ItemizedOverlay`中重写`onDrawItem(Canvas canvas, OverlayItem item, int index)`方法,定制每个覆盖物的绘制方式。 ### 四、注意事项 - **性能优化**:当轨迹点较多时,直接在`draw(Canvas canvas)`中绘制...

    gmap气球源码

    开发者通常需要覆盖其中的几个方法,如:`bindToOverlay()`来绑定数据,`draw()`来绘制气球,以及`onTap()`来处理点击事件。 在"jgilfelt-android-mapviewballoons-4531597"这个压缩包中,我们可以找到由Jeff ...

    百度地图移动版API-for-android开发指南

    - **ItemizedOverlay**: 用于显示具有条目信息的覆盖物,如标注点,可点击并弹出详细信息。 - **PoiOverlay**: 处理本地搜索结果,将搜索到的地点以覆盖物的形式显示在地图上。 - **RouteOverlay**: 用于绘制驾车、...

    android地图开发

    在自定义的Overlay类中,覆盖此方法,实现点击图层时的回调逻辑。 - `OnClickListener`和`OnLongClickListener`:可以为MapView设置这两个监听器,当用户点击或长按地图时触发相应的事件。 - `ItemizedOverlay`:...

    Baidu_map(百度地图)Android平台开发指南

    - **ItemizedOverlay**:用于展示分条目的覆盖物,例如标记点列表。 - **PoiOverlay**:本地搜索结果的覆盖物,显示搜索到的地点。 - **RouteOverlay**:驾车路线的覆盖物,显示导航路径。 - **TransitOverlay**...

    Android客户端百度地图的基本功能实现

    - 通过覆写MapView的getInfoWindow(Marker)方法,可以自定义点击Marker后弹出的窗口样式和内容。 8. **路径规划**: - 百度地图提供驾车、步行、骑行等多种路线规划接口。 - 需要设置起点和终点,调用...

    谷歌地图 android小项目报告.docx

    通过扩展这个项目,开发者可以添加更多功能,如点击标注弹出信息框,或者实现路线规划等高级功能。此外,随着Android系统和谷歌地图API的不断更新,开发者还需要关注最新的开发文档和技术动态,以便利用最新的特性和...

    百度地图移动版SDK开发指南

    - 自定义覆盖物可通过继承`ItemizedOverlay`并重写相关方法来实现。 **搜索服务示例**: - 初始化`MKSearch`对象,然后调用`poiSearchNearBy`方法进行周边搜索。 - 实现回调方法`onGetPoiResult`来处理搜索结果。 ...

    MapABC API for Android 开发指南

    对于在使用过程中遇到的任何问题,开发者可以通过官方提供的渠道(如QQ群或论坛)寻求帮助和支持。 **1.3 获取API Key** 在使用MapABC地图API之前,开发者需要首先注册一个MapABC账户,并通过账户获取API Key。...

Global site tag (gtag.js) - Google Analytics