iOS MBMapkit  v1.0 beta
公有成员 | 属性
MBAnnotationView类参考

MBAnnotationView 类负责使标注在地图视图中可视。标注视图和标注对象是不精确配对的。当标注的坐标点在可视范围时,地图 视图请求自己的委托提供对应的标注视图。稍后标注视图可能被回收,被放到一个由地图视图保持的复用队列中。
设置标注视图的 image 属性是最有效的提供标注内容的方法。标注视图根据你指定的图片自动设置自己的大小,其内容绘制为图 片。因为这是一个视图,所以你还可以重写 drawRect: 方法来手动绘制视图的内容。如果你选择直接重写 drawRect: 方法并且 你没有给 image 属性指定自定义的图片,请注意标注视图的框架的宽度和高度默认设置为0。在你自定义的内容被绘制前,你必须修 改视图框架属性使宽度和高度为非零值。一般来说,如果你的内容只是静态的图片,如果有需要改变 image 属性比你自己绘制图片 效率更高。
标注视图一直固定在地图视图中关联的标注指定点。虽然标注视图随地图滚动,标注视图位于一个独立的显示层,当地图的可视范 围变化时标注视图并不会缩放。
标注视图支持选择状态,这决定视图是未选中、选中还是选中同时显示弹出气泡。用户通过和标注视图的交互来切换选择状态。在 未选中状态,标注视图不高亮显示。在选中状态,标注视图高亮但不显示弹出气泡。最终,标注可以同时高亮并显示弹出气泡。弹出视 图显示标题字符串,控制显示更多的信息。标题的信息由标注对象提供,标注视图负责提供自定义的控件。 更多...

#import <MBAnnotationView.h>

继承图,类MBAnnotationView
MBPinAnnotationView

所有成员的列表。

公有成员

(id) - initWithAnnotation:reuseIdentifier:
 初始化并返回一个新的标注视图。
(void) - prepareForReuse
 当视图被移动到复用队列时调用。
(void) - setSelected:animated:
 设置标注视图的选择状态。
(void) - setDragState:animated:
 设置标注视图当前的拖动状态。

属性

NSString * reuseIdentifier
 标识这个标注视图可复用的字符串。
id< MBAnnotationannotation
 当前和视图关联的标注对象。
UIImage * image
 标注视图显示的图片。
CGPoint centerOffset
 显示视图时的偏移量(像素单位)。
CGPoint calloutOffset
 放置弹出气泡的偏移量(像素单位)。
BOOL enabled
 指示标注是否启用的布尔值。
BOOL highlighted
 指示标注视图是否高亮的布尔值。
BOOL selected
 指示标注视当前是否被选中的布尔值。
BOOL canShowCallout
 指示标注视图能否弹出气泡显示额外的信息。
UIView * leftCalloutAccessoryView
 标准弹出气泡左侧显示的视图。
UIView * rightCalloutAccessoryView
 标准弹出气泡右侧显示的视图。
BOOL draggable
 指示标注视图是否能被拖动的布尔值。
MBAnnotationViewDragState dragState
 标注视图当前的拖动状态。

详细描述

MBAnnotationView 类负责使标注在地图视图中可视。标注视图和标注对象是不精确配对的。当标注的坐标点在可视范围时,地图 视图请求自己的委托提供对应的标注视图。稍后标注视图可能被回收,被放到一个由地图视图保持的复用队列中。
设置标注视图的 image 属性是最有效的提供标注内容的方法。标注视图根据你指定的图片自动设置自己的大小,其内容绘制为图 片。因为这是一个视图,所以你还可以重写 drawRect: 方法来手动绘制视图的内容。如果你选择直接重写 drawRect: 方法并且 你没有给 image 属性指定自定义的图片,请注意标注视图的框架的宽度和高度默认设置为0。在你自定义的内容被绘制前,你必须修 改视图框架属性使宽度和高度为非零值。一般来说,如果你的内容只是静态的图片,如果有需要改变 image 属性比你自己绘制图片 效率更高。
标注视图一直固定在地图视图中关联的标注指定点。虽然标注视图随地图滚动,标注视图位于一个独立的显示层,当地图的可视范 围变化时标注视图并不会缩放。
标注视图支持选择状态,这决定视图是未选中、选中还是选中同时显示弹出气泡。用户通过和标注视图的交互来切换选择状态。在 未选中状态,标注视图不高亮显示。在选中状态,标注视图高亮但不显示弹出气泡。最终,标注可以同时高亮并显示弹出气泡。弹出视 图显示标题字符串,控制显示更多的信息。标题的信息由标注对象提供,标注视图负责提供自定义的控件。

复用标注视图

标注视图被设计成在用户改变地图可视范围能够被复用。地图视图的复用通过在滚动地图时避免创建新的视图显著地提高了性能。由于 这个原因,标注视图不会和它关联的标注紧密连接。使用地图视图的属性(或者设置方法)来配置新标注对象的视图。
任何你初始化标注视图的时候,你总需要给视图指定一个复用标识符。一旦标注视图不再被需要,地图视图可能把它们放到一个复 用队列。一旦新的标注被添加到地图视图,然后委托对象可以调用 MBMapView的dequeueReusableAnnotationViewWithIdentifier 方法让一个已有的视图出列(而不是创建一个新的)并重新配置。

子类化注意

你可以直接调用现有的 MBAnnotationView 类,或者如果有需要子类化 MBAnnotationView 来提供自定义行为。 MBAnnotationView 类的 image 属性允许你可以不子类化而直接设置标注视图的显示。为了方便起见你也可以创建自定义的子类,把标注视图设为一个已知 的状态。
子类化 MBAnnotationView 没有特殊的要求。不过下面的列表列出了一些你可能希望子类化的原因,以及一些在实现期望行为时 需要重写的方法。

来初始化超类。
类需要负责在拖动操作中的关键过渡时刻改变 dragState 属性到恰当值。欲了解更多信息,请参见 dragState 属性的描述。


成员函数文档

- (id) initWithAnnotation: (id< MBAnnotation >)  annotation
reuseIdentifier: (NSString *)  reuseIdentifier 

初始化并返回一个新的标注视图。

参数:
annotation和新视图关联的标注对象。
reuseIdentifier如果你打算给相似类型的标注复用这个标注视图,指定一个字符串来标识它。即使你不打算复用视图可以 指定为nil,但一般还是推荐复用标注视图。
返回:
初始化的标注视图,或者当初始化对象出问题时则为nil.
注解:
复用标识符给你提供了一种通过回收滚入滚出地图的标注视图的方式来提高性能。当视图不再被需要时,它们被地图视图移动到一个复 用队列。
当一个新的标注变为可视时,你的应用可以传一个合适的复用标识符给 MBMmapView 类的 dequeueReusableAnnotationViewWithIdentifier 方法来请求一个视图。
- (void) prepareForReuse

当视图被移动到复用队列时调用。

注解:
本方法的默认实现不执行任何操作。你可以在你自定义的标注视图中重写本方法,把视图在被返回给地图视图委托前设为一个已知状态。
- (void) setDragState: (MBAnnotationViewDragState)  newDragState
animated: (BOOL)  animated 

设置标注视图当前的拖动状态。

参数:
newDragState标注视图新的拖动状态。
animated如果YES,到新拖动状态的变化是动画的,否则将没有动画。
注解:
应用需要重写本方法为自定义标注视图实现拖动支持。当系统检测到用户的拖动动作时,它调用本方法来更新拖动状态。为了应对这些 改变,本方法自定义的实现要做到下面几点:
当拖动状态变为 MBAnnotationViewDragStateStarting 时,你应该把状态设为 MBAnnotationViewDragStateDragging 。 如果通过执行动画来表示拖动的开始,你应该在状态改变前执行动画。改变状态到新的值让地图知道你的动画执行完了。
当拖动状态变为 MBAnnotationViewDragStateCanceling 或 MBAnnotationViewDragStateEnding 时, 你应该把状态设为 MBAnnotationViewDragStateNone 。如果通过执行动画来表示拖动的结束,你应该在状态改变前执行动画。
把状态变为 MBAnnotationViewDragStateDragging 或者 MBAnnotationViewDragStateNone 是一种通知地图你 想要执行动画的方式。例如,当拖动大头针标注的操作开始, MBPinAnnotationView类将执行把大头针从地图提起的动画。同样 的,当大头针被放下时,将执行放下的动画。即使你不想执行任何动画,你仍需要改变这个属性的值来反映正确的状态
你不要尝试通过把状态从 MBAnnotationViewDragStateStarting 变为 MBAnnotationViewDragStateNone 来取 消一个新的拖动操作。如果你不希望标注视图被拖动,设置 draggable 属性为NO。
- (void) setSelected: (BOOL)  selected
animated: (BOOL)  animated 

设置标注视图的选择状态。

参数:
selected如果希望视图被选中设为YES。
animated选择状态的改变是动画的设为YES。
注解:
你不应该直接调用本方法。MBMapView 对象调用本方法来对应用户和标注的交互。

属性文档

- (id<MBAnnotation>) annotation [read, write, retain]

当前和视图关联的标注对象。

注解:
你不应该直接改变这个属性的数值。当标注视图在地图中可视的时候这个属性为非nil值。当视图排到复用队列准备复用时,属性值为nil.
- (CGPoint) calloutOffset [read, write, assign]

放置弹出气泡的偏移量(像素单位)。

注解:
这个属性决定移动弹出气泡的额外距离。当属性设置为(0,0)时,弹出气泡的固定点为标注视图框架的顶部中点。指定正的偏移量弹 出气泡将右下移动,指定负的偏移量弹出气泡将左上移动。
- (BOOL) canShowCallout [read, write, assign]

指示标注视图能否弹出气泡显示额外的信息。

参见:
leftCalloutAccessoryView
rightCalloutAccessoryView
注解:
如果YES,当用户点击选中标注视图时将显示一个标准的弹出气泡。弹出气泡使用关联标注对象的标题和子标题文本(如果标注的 title 方法返回空字符串,标注视图被视为它的 enabled 属性设置为NO)。弹出气泡同时还会显示任何保存在 leftCalloutAccessoryView 和 rightCalloutAccessoryView 属性中的自定义弹出视图。
- (CGPoint) centerOffset [read, write, assign]

显示视图时的偏移量(像素单位)。

注解:
默认标注视图的中心点放置在关联标注的坐标点。如果有需要你可以使用本属性改变标注视图的位置。这里的x和y偏移量以像素为单 位。正的偏移量将标注视图右下移动,负的偏移量将标注视图左上移动。
- (BOOL) draggable [read, write, assign]

指示标注视图是否能被拖动的布尔值。

参见:
canShowCallout
注解:
设置本属性为YES使用户可以拖动标注。如果YES,关联的标注对象必须实现 setCoordinate: 方法。本属性默认的值为NO。
设置本属性为YES使地图视图认为这个标注总是可以拖动的。换句话说,你不能在已经初始化的条件下尝试停止一个操作来限制某 些拖动操作;这样做会导致出现未定义的行为。一旦拖动操作开始,就会一直执行直到完成。
- (MBAnnotationViewDragState) dragState [read, write, assign]

标注视图当前的拖动状态。

参见:
draggable
注解:
你需要重写 setDragState:animated: 方法来管理拖动状态。为了支持拖动操作,你必须重写这个属性的实现,同时按下面的 说明来更新拖动状态:
当拖动状态变为 MBAnnotationViewDragStateStarting 时,你应该把状态设为 MBAnnotationViewDragStateDragging 。 如果通过执行动画来表示拖动的开始,你应该在状态改变前执行动画。改变状态到新的数值让地图知道你的动画执行完了。
当拖动状态变为 MBAnnotationViewDragStateCanceling 或 MBAnnotationViewDragStateEnding时, 你应该把状态设为 MBAnnotationViewDragStateNone 。如果通过执行动画来表示拖动的结束,你应该在状态改变前执行动画。
把状态变为 MBAnnotationViewDragStateDragging 或者 MBAnnotationViewDragStateNone 是一种通知地图你 想要执行动画的方式。例如,当拖动大头针标注的操作开始, MBPinAnnotationView 类将执行把大头针从地图提起的动画。同 样的,当大头针被放下时,将执行放下的动画。即使你不想执行任何动画,你仍需要改变这个属性的值来反映正确的状态。
你不要尝试通过把状态从 MBAnnotationViewDragStateStarting 变为 MBAnnotationViewDragStateNone 来取 消一个新的拖动操作。如果你不希望标注视图被拖动,设置 draggable 属性为NO。
- (BOOL) enabled [read, write, assign]

指示标注是否启用的布尔值。

注解:
默认本属性的值为YES。如果这个属性的值为NO,标注视图将忽略触摸事件并且不能被选择。子类也可以根据本属性的值有差别地显示 标注内容。
- (BOOL) highlighted [read, write, assign]

指示标注视图是否高亮的布尔值。

注解:
你不应该直接设置这个属性的值。地图视图通过触摸事件进出标注视图的边界来设置它。
- (UIImage*) image [read, write, retain]

标注视图显示的图片。

注解:
分配一个新的图像给这个属性同时会改变视图的框架,这样视图可以和新图像的宽度和高度匹配。视图框架的位置不会改变。
- (UIView*) leftCalloutAccessoryView [read, write, retain]

标准弹出气泡左侧显示的视图。

注解:
本属性默认的值为nil,左侧的弹出视图一般用来显示标注信息或者链接到你的应用提供的自定义信息。你的视图的高度应当小于32像 素。
如果你指定的视图还是UIControl类的派生,当控件被点击时你可以调用地图视图的委托来接收通知。如果不是派生自UIControl, 你的视图负责处理任何它边界内的任何触摸事件。
- (NSString*) reuseIdentifier [read, assign]

标识这个标注视图可复用的字符串。

注解:
当你创建视图的时指定复用标识符。你可以调用这个类型来取得先前创建的但由于标注不在屏幕内而未使用的标注视图。
如果你定义显然不同类型的标注(它们的标注视图也显然不同),你可以为每一种标注指定不同的复用标记来区分标注类型。
- (UIView*) rightCalloutAccessoryView [read, write, retain]

标准弹出气泡右侧显示的视图。

参见:
canShowCallout
注解:
本属性默认的值为nil,左侧的弹出视图一般用来链接到更详细的标注信息。你的视图的高度应当小于32像素。一般指定到本属性的视 图是类型为 UIButtonTypeDetailDisclosure 的在UIButton对象。
如果你指定的视图还是UIControl类的派生,当控件被点击时你可以调用地图视图的委托接收通知。如果不是派生自UIControl, 你的视图负责处理任何它边界内的任何触摸事件。
- (BOOL) selected [read, write, assign]

指示标注视当前是否被选中的布尔值。

注解:
你不应该直接设置本属性的值。如果这个属性为YES,标注视图正显示着弹出气泡。

该类的文档由以下文件生成:
 全部  函数 变量 属性