com.baidu.mapapi
类 ItemizedOverlay<Item extends OverlayItem>

java.lang.Object
  继承者 com.baidu.mapapi.Overlay
      继承者 com.baidu.mapapi.ItemizedOverlay<Item>
所有已实现的接口:
Overlay.Snappable
直接已知子类:
PoiOverlay, RouteOverlay, TransitOverlay

public abstract class ItemizedOverlay<Item extends OverlayItem>
extends Overlay
implements Overlay.Snappable

ItemizedOverlay是Overlay的一个基类,包含了一个OverlayItem列表。 从南到北的处理item,用于绘制、创建平移边界、为每个点绘制标记点,和维护一个焦点选中的item,同时也负责把一个屏幕点击匹配到item上去,分发焦点改变事件给备选的监听器。


嵌套类摘要
static interface ItemizedOverlay.OnFocusChangeListener
          这个接口用于对item焦点变化感兴趣的监听器。
 
从类 com.baidu.mapapi.Overlay 继承的嵌套类/接口
Overlay.Snappable
 
字段摘要
 
从类 com.baidu.mapapi.Overlay 继承的字段
SHADOW_X_SKEW, SHADOW_Y_SCALE
 
构造方法摘要
ItemizedOverlay(Drawable defaultMarker)
          创建一个新的ItemizedOverlay
 
方法摘要
protected static Drawable boundCenter(Drawable balloon)
          调整一个drawable边界,使得(0,0)是这个drawable中心的中心点
protected static Drawable boundCenterBottom(Drawable balloon)
          调整一个drawable边界,使得(0,0)是这个drawable底部最后一行中心的一个像素
protected abstract  Item createItem(int i)
          子类通过该方法创建实体item。
 void draw(Canvas canvas, MapView mapView, boolean shadow)
          在每个item上绘制一个标记点。
 GeoPoint getCenter()
          默认情况下,返回第一个item的坐标点。
 Item getFocus()
           
protected  int getIndexToDraw(int drawingOrder)
          返回给定索引对应item的序号。
 Item getItem(int position)
           
 int getLastFocusedIndex()
           
 int getLatSpanE6()
           
 int getLonSpanE6()
           
protected  boolean hitTest(OverlayItem item, Drawable marker, int hitX, int hitY)
          检查给定的点击测试点是否在一个item标记点范围内。
 Item nextFocus(boolean forwards)
          返回给定方向上下一个将要被焦点选中的item,如果已经到了行尾,返回null。
 boolean onKeyUp(int keyCode, android.view.KeyEvent event, MapView mapView)
          处理一个按键放开事件。
 boolean onSnapToItem(int x, int y, Point snapPoint, MapView mapView)
          检验给定的(x,y)是否足够接近引起当前动作(例如缩放)的item。
 boolean onTap(GeoPoint p, MapView mapView)
          处理一个点击事件。
protected  boolean onTap(int index)
          覆盖这个方法去处理一个item上的点击事件。
 boolean onTouchEvent(android.view.MotionEvent event, MapView mapView)
          处理一个触摸事件。
 boolean onTrackballEvent(android.view.MotionEvent event, MapView mapView)
          处理一个跟踪球事件。
protected  void populate()
          在一个新ItemizedOverlay上执行所有操作的工具方法。
 void setDrawFocusedItem(boolean drawFocusedItem)
          设置是否绘制焦点选中的item。
 void setFocus(Item item)
          如果给定的item存在overlay中,强制其为焦点选中。
protected  void setLastFocusedIndex(int i)
          设置最近(或当前)焦点选中的item的索引,如果没有item被选中则设置为-1。
 void setOnFocusChangeListener(ItemizedOverlay.OnFocusChangeListener l)
           
abstract  int size()
          Overlay中item的数量。
 
从类 com.baidu.mapapi.Overlay 继承的方法
draw, drawAt, onKeyDown
 
从类 java.lang.Object 继承的方法
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

构造方法详细信息

ItemizedOverlay

public ItemizedOverlay(Drawable defaultMarker)
创建一个新的ItemizedOverlay

参数:
defaultMarker - item默认显示在地图上的的Drawable,为了正确绘制标记点,需要给它添加边界,例如boundCenterBottom(marker))
方法详细信息

boundCenterBottom

protected static Drawable boundCenterBottom(Drawable balloon)
调整一个drawable边界,使得(0,0)是这个drawable底部最后一行中心的一个像素

参数:
balloon - 待调整的drawable
返回:
和输入同样的drawable

boundCenter

protected static Drawable boundCenter(Drawable balloon)
调整一个drawable边界,使得(0,0)是这个drawable中心的中心点

参数:
balloon - 待调整的drawable
返回:
和输入同样的drawable

createItem

protected abstract Item createItem(int i)
子类通过该方法创建实体item。 只能从populate()调用;并且缓存起来待以后使用


size

public abstract int size()
Overlay中item的数量。 在populate()执行过程中一次调用,一直存储


getCenter

public GeoPoint getCenter()
默认情况下,返回第一个item的坐标点。 必须首先调用populate()。


getIndexToDraw

protected int getIndexToDraw(int drawingOrder)
返回给定索引对应item的序号。 默认情况下,item通过纬度排序。子类可以覆盖这个方法以改变绘制顺序。


draw

public void draw(Canvas canvas,
                 MapView mapView,
                 boolean shadow)
在每个item上绘制一个标记点。 首先必须调用populate()。

对应Overlay中的每个item,标记点都要被绘制两次,一次是在绘制阴影阶段,然后是在非阴影阶段。标记点的底中部将和item的地理坐标对齐

通过覆盖方法getIndexToDraw(int),绘制的顺序可能会改变。一个item可能通过方法OverlayItem.getMarker(int)获得另外一个标记点。如果那个方法返回null,那么使用默认的标记点

焦点选中的item总是最后一个绘制,然后放置在其它item之上达到可见

覆盖:
Overlay 中的 draw
参数:
canvas - 待绘制的画布。注意,这个画布或许已经被实施了某种变换,所以保留其原样
mapView - 请求绘制的MapView。使用MapView.getProjection()在屏幕坐标和经纬度对之间做变换
shadow - 如果为true,绘制阴影层。如果为false, 绘制overlay的内容

getLatSpanE6

public int getLatSpanE6()
返回:
Overlay的纬度范围,在调用populate()过程中计算最北item和最南item之间的差值

getLonSpanE6

public int getLonSpanE6()
返回:
Overlay的经度范围,在调用populate()过程中计算最西和最东item之间的差值。横跨不连续经度的overlay在-180度时会报告非常大的范围

populate

protected final void populate()
在一个新ItemizedOverlay上执行所有操作的工具方法。 子类通过createItem(int)方法提供item。一旦有了数据,子类在调用其它方法前,首先调用这个方法


setLastFocusedIndex

protected void setLastFocusedIndex(int i)
设置最近(或当前)焦点选中的item的索引,如果没有item被选中则设置为-1。 即使用户暂时平移远离了overlay,nextFocus(boolean)也能够重新按顺序浏览一个overlay。通常情况下,子类不需要去设置这个变量,因为当焦点变换时,变量可以自动更新。


setFocus

public void setFocus(Item item)
如果给定的item存在overlay中,强制其为焦点选中。 任何注册的ItemizedOverlay.OnFocusChangeListener都将被通知。这不会移动地图,所以如果item不是在中心,用户会感到困惑。如果没有找到这个item,这是一个空操作。可以传递null取消焦点


getFocus

public Item getFocus()
返回:
当前焦点选中的item,如果当前没有item被焦点选中,返回null

getLastFocusedIndex

public final int getLastFocusedIndex()
返回:
最近焦点选中item的级别,如果从来没有焦点选中,则返回-1

getItem

public final Item getItem(int position)
返回:
给定索引对应的item

nextFocus

public Item nextFocus(boolean forwards)
返回给定方向上下一个将要被焦点选中的item,如果已经到了行尾,返回null。 如果以前没有焦点选中过,返回第一个item,如果没有item则返回null


onTap

public boolean onTap(GeoPoint p,
                     MapView mapView)
处理一个点击事件。 一个点击只有落到一个item上去时才会被处理,可以去覆盖onTap(int),返回true

覆盖:
Overlay 中的 onTap
参数:
p - 点击的位置点
mapView - 产生点击事件的MapView
返回:
如果overlay处理了这个点击事件,返回true

onTrackballEvent

public boolean onTrackballEvent(android.view.MotionEvent event,
                                MapView mapView)
处理一个跟踪球事件。 默认情况下,不做任何动作,返回false

覆盖:
Overlay 中的 onTrackballEvent
参数:
event - 动作事件
mapView - 产生跟踪球事件的MapView
返回:
如果overlay处理了这个事件,返回true

onKeyUp

public boolean onKeyUp(int keyCode,
                       android.view.KeyEvent event,
                       MapView mapView)
处理一个按键放开事件。 默认情况下,不做任何动作,返回false

覆盖:
Overlay 中的 onKeyUp
参数:
keyCode - 键码值
event - 按键事件
mapView - 产生按键事件的MapView
返回:
如果overlay处理了这个事件,返回true

onTouchEvent

public boolean onTouchEvent(android.view.MotionEvent event,
                            MapView mapView)
处理一个触摸事件。 默认情况下,不做任何动作,返回false

覆盖:
Overlay 中的 onTouchEvent
参数:
event - 触摸事件
mapView - 产生按键事件的MapView
返回:
如果overlay处理了这个事件,返回true

hitTest

protected boolean hitTest(OverlayItem item,
                          Drawable marker,
                          int hitX,
                          int hitY)
检查给定的点击测试点是否在一个item标记点范围内。 覆盖修改了一个item点击测试的方法。点击点相对于标记点的范围。默认的实现只检查点击点是否在标记点的可触摸范围内

参数:
item - 进行点击测试的item
marker - item的标记点
hitX - 测试点的x坐标
hitY - 测试点的y坐标
返回:
如果点击测试点在标记点范围内,返回true

setOnFocusChangeListener

public void setOnFocusChangeListener(ItemizedOverlay.OnFocusChangeListener l)

setDrawFocusedItem

public void setDrawFocusedItem(boolean drawFocusedItem)
设置是否绘制焦点选中的item。 默认情况是绘制这个item,但一些用户更偏好于自己去绘制焦点选中的item


onTap

protected boolean onTap(int index)
覆盖这个方法去处理一个item上的点击事件。 这可能是对屏幕上item的触摸点击,或者对位于中心且已选定的item的跟踪球点击。默认情况下,什么都不做,返回false

返回:
如果点击事件被处理,返回true;如果想要把这个事件传递给其它overlay,返回false

onSnapToItem

public boolean onSnapToItem(int x,
                            int y,
                            Point snapPoint,
                            MapView mapView)
检验给定的(x,y)是否足够接近引起当前动作(例如缩放)的item。

指定者:
接口 Overlay.Snappable 中的 onSnapToItem
参数:
x - 屏幕x坐标
y - 屏幕y坐标
snapPoint - 用距离给定点(x,y)最近的兴趣点(屏幕坐标)填充。如果没有点击,则不可触摸
mapView - 请求点击的MapView。 使用MapView.getProjection()在屏幕像素和经纬度对之间变换
返回:
是否点击了兴趣点