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

MBOverlayView类定义了所有与覆盖层视图相关的基本行为。一个覆盖层视图提供了覆盖层对象的视觉显示。本类定义了在地图视 图使用的绘制结构但不执行任何实际的绘制。子类需要重写 drawMapRect:zoomScale:inContext: 方法来绘制图覆盖层视图的 内容。
MBMapKit 框架提供了一些具体的覆盖层视图实例。它给每个具体的覆盖层对象提供覆盖层视图。如果你希望以别的方式绘制覆盖层 的内容你可以使用一个现有的覆盖层视图来定义自己的子类。 更多...

#import <MBOverlayView.h>

继承图,类MBOverlayView
MBOverlayPathView MBCircleView MBPolygonView MBPolylineView

所有成员的列表。

公有成员

(id) - initWithOverlay:
 初始化并返回与指定覆盖层对象关联的覆盖层视图。
(CGPoint) - pointForMapPoint:
 返回指定地图点在覆盖层视图中对应的点。
(MBMapPoint- mapPointForPoint:
 返回指定覆盖层视图中的点对应的地图点。
(CGRect) - rectForMapRect:
 指定地图点在覆盖层视图中对应的点。
(MBMapRect- mapRectForRect:
 返回指定覆盖层视图坐标系中矩形对应的地图矩形。
(BOOL) - canDrawMapRect:zoomScale:
 返回布尔值表示覆盖层视图是否准备好绘制它的内容。
(void) - drawMapRect:zoomScale:inContext:
 绘制覆盖层视图的内容。
(void) - setNeedsDisplayInMapRect:
 在所有缩放等级下使给定地图矩形中的视图无效。
(void) - setNeedsDisplayInMapRect:zoomScale:
 只在指定的缩放等级下使给定地图矩形中的视图无效。

保护属性

package id< MBOverlay_overlay
MBMapRect _boundingMapRect
CGAffineTransform _mapTransform
id _geometryDelegate
id _canDrawCache
pthread_rwlock_t _rwLock
CFTimeInterval _lastTile
CFRunLoopTimerRef _scheduledScaleTimer
struct {
   unsigned int   keepAlive:1
   unsigned int   levelCrossFade:1
   unsigned int   drawingDisabled:1
   unsigned int   usesTiledLayer:1
_flags

属性

id< MBOverlayoverlay
 包含绘制数据的覆盖层对象。

详细描述

MBOverlayView类定义了所有与覆盖层视图相关的基本行为。一个覆盖层视图提供了覆盖层对象的视觉显示。本类定义了在地图视 图使用的绘制结构但不执行任何实际的绘制。子类需要重写 drawMapRect:zoomScale:inContext: 方法来绘制图覆盖层视图的 内容。
MBMapKit 框架提供了一些具体的覆盖层视图实例。它给每个具体的覆盖层对象提供覆盖层视图。如果你希望以别的方式绘制覆盖层 的内容你可以使用一个现有的覆盖层视图来定义自己的子类。

子类化注意

你可以基于自定义的形状和内容子类化 MBOverlayView 以创建覆盖层。你只应该重写 drawMapRect:zoomScale:inContext: 方法。但是如果你的类可能包含了未准备好不能立刻绘制的内容,你还需要重写 canDrawMapRect:zoomScale: 方法,调用这 个方法来报告你的类什么时候已经准备好可以绘制。 你实现的 drawMapRect:zoomScale:inContext: 方法必须保证多线程安全运行。为了提高性能,地图视图可能把足够大的覆 盖层拆分成片在独立的线程中执行每个片的渲染。


成员函数文档

- (BOOL) canDrawMapRect: (MBMapRect mapRect
zoomScale: (MBZoomScale)  zoomScale 

返回布尔值表示覆盖层视图是否准备好绘制它的内容。

canDrawMapRect:zoomScale:

参数:
mapRect需要更新的地图矩形。
zoomScale应用到地图的当前缩放系数
返回:
如果视图准备好绘制它的内容返回YES,否则返回NO。
注解:
在覆盖层视图可能需要依赖其它信息来绘制内容的时候可以重写本方法。例如,覆盖层视图表示交通状况的时候可能推迟绘制直到得到 所有需要的交通数据。这种情况下,方法返回NO表示它还没准备好绘制。
如果本方法返回NO,当覆盖层视图稍后准备好绘制它的内容时你的应用负责调用setNeedsDisplayInMapRect:zoomScale: 方法。
本方法的默认实现返回YES。
- (void) drawMapRect: (MBMapRect mapRect
zoomScale: (MBZoomScale)  zoomScale
inContext: (CGContextRef)  context 

绘制覆盖层视图的内容。

drawMapRect:zoomScale:inContext:

参数:
mapRect需要更新的地图矩形。你可以使用这个矩形来限制只绘制视图改变了的部分。
zoomScale应用到地图的当前缩放系数。你可以使用这个值来配置笔画的线宽或者其它可能受到视图内容缩放等级影响的属性。
context用于绘制地图内容的图像上下文。
参见:
- canDrawMapRect:zoomScale:
- pointForMapPoint:
- rectForMapRect:
注解:
本方法默认的实现不执行任何操作。子类需要重写本方法(而不是drawRect:方法)来绘制视图的内容。
在你的绘制代码中,你需要指定所有与地图本身相关和与视图边界或框架不相关的渲染内容的位置。换句话说,使用地图点和地图 矩形计算出所有覆盖层内容的位置和大小,把这些值转换成CGPoint及CGRect类型(使用本类中的方法),然后再用转换后的点来 建立路径或者指定物体渲染的位置。
你不应该假设视图的框架和覆盖层的边框匹配。视图框架实际上大于边框,这样才能允许你在边框的边界地方给类似道路绘制物体 的线条。对于有些类型的内容,比如梯度,这意味着你可能需要给context应用裁剪矩形来确保绘制在正确的范围。
建议你采用Core Graphics来绘制覆盖层的内容。如果你使用UIKit类的方法来绘制,在调用任何绘制前你必须把指定的图像上 下文压入上下文堆栈(使用UIGraphicsPushContext函数)。当你完成了绘制,你必须使用UIGraphicsPopContext把图像上 下文从堆栈中压出来。
另外,每次调用本方法时你需要避免绘制覆盖层中所有的内容。相反,你的实现总是应该考虑mapRect参数来避免绘制矩形外的内 容。如果不这样做可能导致性能问题。
- (id) initWithOverlay: (id< MBOverlay >)  overlay

初始化并返回与指定覆盖层对象关联的覆盖层视图。

initWithOverlay:

参数:
overlay用于在地图中绘制的覆盖层对象。本对象提供覆盖层形状的数据。覆盖层视图将保留这个对象。
返回:
初始化的覆盖层视图。
注解:
初始化后,覆盖层视图的框架被设为CGRectZero,在显示的时候地图视图将设置覆盖层视图的大小和位置,你不应该自己改变这些 值。
- (MBMapPoint) mapPointForPoint: (CGPoint)  point

返回指定覆盖层视图中的点对应的地图点。

mapPointForPoint:

参数:
point你想要转换的视图坐标系中的点。
返回:
与指定点对应的二维地图投影中的点。
参见:
- pointForMapPoint:
- (MBMapRect) mapRectForRect: (CGRect)  rect

返回指定覆盖层视图坐标系中矩形对应的地图矩形。

mapRectForRect:

参数:
rect接收者坐标系中指定的矩形
返回:
与指定视图矩形对应的二维地图投影中的矩形。
参见:
- rectForMapRect:
- (CGPoint) pointForMapPoint: (MBMapPoint mapPoint

返回指定地图点在覆盖层视图中对应的点。

pointForMapPoint:

参数:
mapPoint二维地图投影中的点。如果是是一个坐标值(经度和纬度),你可以使用 MBMapPointForCoordinate 函数把这个点转成地图点
返回:
指定地图点在接收者坐标系中对应的点。
参见:
- mapPointForPoint:
- (CGRect) rectForMapRect: (MBMapRect mapRect

指定地图点在覆盖层视图中对应的点。

rectForMapRect:

参数:
mapRect二维地图投影中的矩形。
返回:
接收者坐标系统中指定的矩形。
参见:
- mapRectForRect:
- (void) setNeedsDisplayInMapRect: (MBMapRect mapRect

在所有缩放等级下使给定地图矩形中的视图无效。

setNeedsDisplayInMapRect:

参数:
mapRect需要更新的覆盖层部分。这个值是地图矩形而不是视图中的矩形。你可以调用 mapRectForRect 方法把视图矩形 转成地图矩形。
注解:
把视图的矩形部分标记为失效将会使这部分视图在下次的更新中被重绘。本方法将根据当前地图的缩放等级来使覆盖层失效。
- (void) setNeedsDisplayInMapRect: (MBMapRect mapRect
zoomScale: (MBZoomScale)  zoomScale 

只在指定的缩放等级下使给定地图矩形中的视图无效。

setNeedsDisplayInMapRect:zoomScale:

参数:
mapRect需要更新的覆盖层部分。这个值是地图矩形而不是视图中的矩形。你可以调用 mapRectForRect 方法把视图矩形 转成地图矩形。
zoomScale你想让覆盖层失效的缩放等级。
注解:
把视图的矩形部分标记为失效将会使这部分视图在下次的更新中被重绘。本方法将只会使在指定的缩放等级下绘制的覆盖层失效。

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