目前遇到问题:当我点击地图上的覆盖物时可以
弹出提示框,但点击该覆盖物
以外的地方时,最佳的用户体验是把
去掉该提示框。但就是消失不了。
类似:
以前也做过类似效果,搬过来总是不行,经过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
分享到:
相关推荐
创建`ItemizedOverlay`需要继承它并重写必要的方法,例如`bindToMapView()`用于绑定到地图视图,`onTap()`用于处理点击事件,以及`draw()`用于绘制覆盖物。 以下是一些关键步骤: 1. **创建自定义的`...
首先,你需要继承`ItemizedOverlay<OverlayItem>`,并重写必要的方法,如`draw()`用于在地图上绘制覆盖物,`onTap()`处理点击事件,以及`createItem(int index)`和`size()`来获取覆盖物的数量。 2. **OverlayItem*...
`draw()`方法用于在地图上绘制覆盖物,`onTap()`方法用于处理点击事件,`createItem(int index)`则用于创建并返回`OverlayItem`实例。 1. **创建自定义的ItemizedOverlay子类** ```java public class ...
若要实现点击覆盖物后的操作,可以设置OnClickListener: ```java baiduMap.setOnMarkerClickListener(new BaiduMap.OnMarkerClickListener() { @Override public boolean onMarkerClick(Marker marker) { Toast...
但是它只支持将弹出内容转化为不多于三个Bitmap,如果这个弹出窗口里想有按钮来响应点击事件,用这个就不能满足要求了,于是,看了一遍百度地图覆盖物的API,我决定用自定义View的方法来实现类似的效果,先贴一下...
1. 创建一个自定义的`Overlay`类,继承自`ItemizedOverlay<OverlayItem>`,在这个类中你需要重写`draw()`方法,绘制覆盖物。 2. 在`draw()`方法内,根据每个`OverlayItem`的位置,使用`Canvas`绘制自定义的图标。 3....
ItemizedOverlay是覆盖物管理的基础类,你可以继承它并重写相关方法,实现自定义的行为。例如,点击覆盖物时弹出信息窗口,或者处理长按事件。BDMap_3中,你会看到如何结合MKSearch的结果创建具有详细信息的标注...
在这个类中,你需要重写父类的一些方法,如`onTap()`(处理点击事件)和`draw()`(绘制覆盖物)。 ```java public class MyCustomItemizedOverlay extends ItemizedOverlay<CustomOverlayItem> { public ...
关于覆盖物的实现,文档介绍了多种覆盖物的类型和使用方法,例如: - Overlay类作为覆盖物的抽象基类,用于实现自定义覆盖物。 - MyLocationOverlay类用于显示当前位置信息。 - ItemizedOverlay类用于显示分条目的...
- 在`ItemizedOverlay`中重写`onDrawItem(Canvas canvas, OverlayItem item, int index)`方法,定制每个覆盖物的绘制方式。 ### 四、注意事项 - **性能优化**:当轨迹点较多时,直接在`draw(Canvas canvas)`中绘制...
开发者通常需要覆盖其中的几个方法,如:`bindToOverlay()`来绑定数据,`draw()`来绘制气球,以及`onTap()`来处理点击事件。 在"jgilfelt-android-mapviewballoons-4531597"这个压缩包中,我们可以找到由Jeff ...
- **ItemizedOverlay**: 用于显示具有条目信息的覆盖物,如标注点,可点击并弹出详细信息。 - **PoiOverlay**: 处理本地搜索结果,将搜索到的地点以覆盖物的形式显示在地图上。 - **RouteOverlay**: 用于绘制驾车、...
在自定义的Overlay类中,覆盖此方法,实现点击图层时的回调逻辑。 - `OnClickListener`和`OnLongClickListener`:可以为MapView设置这两个监听器,当用户点击或长按地图时触发相应的事件。 - `ItemizedOverlay`:...
- **ItemizedOverlay**:用于展示分条目的覆盖物,例如标记点列表。 - **PoiOverlay**:本地搜索结果的覆盖物,显示搜索到的地点。 - **RouteOverlay**:驾车路线的覆盖物,显示导航路径。 - **TransitOverlay**...
- 通过覆写MapView的getInfoWindow(Marker)方法,可以自定义点击Marker后弹出的窗口样式和内容。 8. **路径规划**: - 百度地图提供驾车、步行、骑行等多种路线规划接口。 - 需要设置起点和终点,调用...
通过扩展这个项目,开发者可以添加更多功能,如点击标注弹出信息框,或者实现路线规划等高级功能。此外,随着Android系统和谷歌地图API的不断更新,开发者还需要关注最新的开发文档和技术动态,以便利用最新的特性和...
- 自定义覆盖物可通过继承`ItemizedOverlay`并重写相关方法来实现。 **搜索服务示例**: - 初始化`MKSearch`对象,然后调用`poiSearchNearBy`方法进行周边搜索。 - 实现回调方法`onGetPoiResult`来处理搜索结果。 ...
对于在使用过程中遇到的任何问题,开发者可以通过官方提供的渠道(如QQ群或论坛)寻求帮助和支持。 **1.3 获取API Key** 在使用MapABC地图API之前,开发者需要首先注册一个MapABC账户,并通过账户获取API Key。...