background image

Android 开发-百度地图自定义弹出窗口

我们使用百度地图的时候,点击地图上的

Marker,会弹出一个该地点详细信息的窗口,

如下左图所示,有时候,我们希望自己定义这个弹出窗口的内容,或者,干脆用自己的数
据来构造这样的弹出窗口,但是,在百度地图最新的

Android SDK 中,没有方便操作这种

弹出窗口的类,虽然有一个

PopupOverlay,但是它只支持将弹出内容转化为不多于三个

Bitmap,如果这个弹出窗口里想有按钮来响应点击事件,用这个就不能满足要求了,于是,
看了一遍百度地图覆盖物的

API,我决定用自定义 View 的方法来实现类似的效果,先贴一

下大体效果图,如下右图:

 

 

  基本原
理就是用

ItemizedOverlay 来添
加附加物,在

OnTap

方法中向

MapView

上添加一个自定义的
View(如果已存在
就直接设为可见),
下面具体来介绍我的实现方法:

  一、自定义覆盖物类:

MyPopupOverlay,这个类是最关键的一个类 ItemizedOverlay,

用于设置

Marker,并定义 Marker 的点击事件,弹出窗口,至于弹出窗口的内容,则通过定

Listener,放到 Activity 中去构造。如果没有特殊需求,这个类不需要做什么改动。代码如

下,

popupLinear 这个对象,就是加到地图上的自定义 View:

 1

 

public

 

class

 MyPopupOverlay 

extends

 ItemizedOverlay<OverlayItem> {

 2