MBMapkit
|
MBMapView 对象提供可嵌入的地图界面,类似于地图应用提供的界面。你直接使用这个类来显示地图信息、在应用中控制地图的 内容。你可以给定一个坐标作为地图的中心,指定想要显示的范围的大小,使用自定义的信息标注地图。
在你初始化地图视图的时候,你需要指定地图显示的初始范围。你可以通过设置 region 属性来完成这个操作。范围是由中心点 和水平与竖直距离(跨度)定义。跨度决定了在给定点的下多少地图可视,同时你可以用它设置缩放等级。指定一个大的跨度将导致 用户看见一个大的地理区域对应一个低的缩放等级。指定一个小的跨度将导致用户看见一个更狭窄的地理区域对应一个高的缩放等级。
除了通过编码设置跨度外, MBMapView 类支持许多标准接口用于改变地图的位置和缩放等级。特别的,地图视图支持双击和双 指手势来滚动、放大和缩小地图。默认启用这些手势,但可以通过设置 scrollEnabled 和 zoomEnabled 属性来禁用手势。
数据类型 MBMapPoint 、 MBMapSize 和 MBMapRect 用来指定地图上的位置和距离。你可以使用这些类型的数据来指定 地图的可视范围和指定覆盖层的位置。
你可以提供一个委托对象来获得地图视图运行的信息。地图视图调用你自定义委托的方法让委托知道地图状态的改变同时调整自定 义标注的显示, 下面的“标注地图”中将有更加详细的描述。委托的对象可以是你应用中的任何对象只要它遵从 MBMapViewDelegate 协议。参考 MBMapViewDelegate 可以获得更多实现委托对象的信息。
更多...
#import <MBMapView.h>
公有成员 | |
(void) | - setRegisterCode: |
设置图吧家园注册码 | |
(id) | - initWithFrame:withLocal: |
实例化地图视图。 | |
(unsigned long long) | - totalBytesSended |
返回地图视图总的数据发送量。 | |
(unsigned long long) | - totalBytesReceived |
返回地图视图总的数据接收量。 | |
(void) | - setRegion:animated: |
改变当前可视区域,可选采用动画效果改变。 | |
(void) | - setCenterCoordinate:animated: |
改变地图的中心坐标,可选采用动画效果改变。 | |
(MBCoordinateRegion) | - regionThatFits: |
调整指定范围的长宽比以确保它和地图试图的框架匹配。 | |
(void) | - setVisibleMapRect:animated: |
改变地图的当前可视部分,可选采用动画效果改变。 | |
(MBMapRect) | - mapRectThatFits: |
调整指定地图矩形的长宽比以确保它和地图视图的框架匹配。 | |
(void) | - setVisibleMapRect:edgePadding:animated: |
改变地图的当前可视部分,同时允许指定边缘额外的间隔。 | |
(MBMapRect) | - mapRectThatFits:edgePadding: |
加上指定的插值调整指定地图矩形的长宽比。 | |
(CGPoint) | - convertCoordinate:toPointToView: |
转换地图坐标到指定视图中的点。 | |
(CLLocationCoordinate2D) | - convertPoint:toCoordinateFromView: |
转换指定视图坐标系中的点到地图坐标。 | |
(CGRect) | - convertRegion:toRectToView: |
转换地图范围到指定视图中的矩形。 | |
(MBCoordinateRegion) | - convertRect:toRegionFromView: |
转换指定视图坐标系中的矩形到地图范围。 | |
(void) | - addAnnotation: |
向地图视图中添加指定的标注。 | |
(void) | - addAnnotations: |
向地图视图中添加一组标注。 | |
(void) | - removeAnnotation: |
从地图视图中移除指定的标注。 | |
(void) | - removeAnnotations: |
从地图视图中移除一组指定的标注对象。 | |
(NSSet *) | - annotationsInMapRect: |
返回所有位于指定地图矩形内的标注。 | |
(MBAnnotationView *) | - viewForAnnotation: |
如果有的话返回和指定标注关联的标注视图。 | |
(MBAnnotationView *) | - dequeueReusableAnnotationViewWithIdentifier: |
通过标识符返回可复用的标注视图。 | |
(void) | - selectAnnotation:animated: |
选中指定的标注,并显示弹出气泡。 | |
(void) | - deselectAnnotation:animated: |
取消选择指定的标注同时隐藏它的弹出气泡。 | |
(void) | - addOverlay: |
向地图中添加一个覆盖层。 | |
(void) | - addOverlays: |
向地图中添加一组覆盖层。 | |
(void) | - removeOverlay: |
从地图视图中移除一个覆盖层。 | |
(void) | - removeOverlays: |
从地图中移除一个或多个覆盖层。 | |
(void) | - insertOverlay:atIndex: |
插入一个覆盖层到和地图关联的覆盖层对象列表中。 | |
(void) | - exchangeOverlayAtIndex:withOverlayAtIndex: |
交换两个覆盖层的位置。 | |
(void) | - insertOverlay:aboveOverlay: |
插入一个覆盖层到另一个的上面。 | |
(void) | - insertOverlay:belowOverlay: |
插入一个覆盖层到另一个的下面。 | |
(MBOverlayView *) | - viewForOverlay: |
如果有的话返回和指定覆盖层相关的视图。 | |
属性 | |
id< MBMapViewDelegate > | delegate |
接收者的委托。 | |
MBCoordinateRegion | region |
地图视图当前显示的范围。 | |
CLLocationCoordinate2D | centerCoordinate |
地图视图中心的地图坐标。 | |
MBMapRect | visibleMapRect |
地图视图当前显示的区域。 | |
MBMapType | mapType |
地图视图的数据类型。 | |
BOOL | zoomEnabled |
确定用户是否能够通过手势对地图进行缩放的布尔值。 | |
BOOL | scrollEnabled |
确定用户是否能够缩放地图的布尔值。 | |
BOOL | showsScale |
指示是否显示比例尺的布尔值。 | |
BOOL | showsTraffic |
指示是否现实交通流量的布尔值。 | |
BOOL | showsUserLocation |
指示地图是否显示用户位置的布尔值。 | |
MBUserLocation * | userLocation |
代表用户当前位置的标注对象。 | |
BOOL | userLocationVisible |
指示设备的当前位置在地图视图中是否可视的布尔值。 | |
NSArray * | annotations |
接收者关联的标注的完整列表。 | |
NSArray * | selectedAnnotations |
当前选中的标注。 | |
CGRect | annotationVisibleRect |
当前标注视图显示的可视矩形。 | |
NSArray * | overlays |
当前和地图视图关联的覆盖层。 |
MBMapView 对象提供可嵌入的地图界面,类似于地图应用提供的界面。你直接使用这个类来显示地图信息、在应用中控制地图的 内容。你可以给定一个坐标作为地图的中心,指定想要显示的范围的大小,使用自定义的信息标注地图。
在你初始化地图视图的时候,你需要指定地图显示的初始范围。你可以通过设置 region 属性来完成这个操作。范围是由中心点 和水平与竖直距离(跨度)定义。跨度决定了在给定点的下多少地图可视,同时你可以用它设置缩放等级。指定一个大的跨度将导致 用户看见一个大的地理区域对应一个低的缩放等级。指定一个小的跨度将导致用户看见一个更狭窄的地理区域对应一个高的缩放等级。
除了通过编码设置跨度外, MBMapView 类支持许多标准接口用于改变地图的位置和缩放等级。特别的,地图视图支持双击和双 指手势来滚动、放大和缩小地图。默认启用这些手势,但可以通过设置 scrollEnabled 和 zoomEnabled 属性来禁用手势。
数据类型 MBMapPoint 、 MBMapSize 和 MBMapRect 用来指定地图上的位置和距离。你可以使用这些类型的数据来指定 地图的可视范围和指定覆盖层的位置。
你可以提供一个委托对象来获得地图视图运行的信息。地图视图调用你自定义委托的方法让委托知道地图状态的改变同时调整自定 义标注的显示, 下面的“标注地图”中将有更加详细的描述。委托的对象可以是你应用中的任何对象只要它遵从 MBMapViewDelegate 协议。参考 MBMapViewDelegate 可以获得更多实现委托对象的信息。
MBMapView类支持使用自定义的信息标注地图。因为地图可能有大量潜在的标注。地图视图区分管理标注数据的标注对象和在地图 上展示这个数据的视图对象。
标注对象可以上任何遵守 MBAnnotation 协议的对象。通常使用应用中数据模型已有的类来实现标注对象。这样你可以直接控制 标注数据,而且还使它在地图视图中可用。每个标注对象包含了标注在地图的位置信息以及可以在弹出气泡中显示的描述信息。
标注视图是一个 MBAnnotationView 类的实例,用于处理标注对象在地图中的表示。标注视图的负责用意义的方式展示标注数据。 例如,地图应用使用一个大头针图标表示地图上的一个兴趣点。(Map Kit框架提供 MBPinAnnotationView 类作为应用中类似 的标注)。你还可以创建的覆盖更大部分地图的标注视图。
因为标注视图只有在屏幕内时才被需要, MBMapView 类采用了一个算法把未使用的标注视图放到队列。带有标识符的标注视图 移出屏幕后将被地图视图内部的分离并放到队列。这个特征通过只让少量的标注视图保持在内存中及回收这些你有的视图的方式来提高 内存的利用。同时这样还通过避免在地图滚动时创建新的视图来提高滚动的性能。
在配置地图界面的时候,你需要立刻添加所有的标注对象。地图视图使用每个标注对象的坐标数据来决定对应的标注视图什么时候 需要显示在屏幕上。当标注移进屏幕后,地图视图请求自己的委托来创建对应的标注视图。如果应用中有多种不同的标注,可以定义不 同的标注视图类表示每种类型。
你可以使用覆盖层显示覆盖地图较大区域的内容。覆盖层可以是任何遵守 MBOverlay 协议的对象。覆盖层对象是一个包含了许多用 于指定覆盖层形状和大小以及在地图中位置的点的数据对象。覆盖层可以表示圆形、矩形和多分割的线条,还有简单或复杂的多边形。 你还可以定义自己的覆盖层来表示其它的形状。
标注视图是一个 MBOverlayView 类的实例,用于处理覆盖层对象在地图中的显示。覆盖层视图的任务是在地图上层绘制表示覆 盖层的形状。例如,一个表示公交路线的覆盖层可能的覆盖层视图绘制了路线的路径同时沿着路线带有显示公交站的图标。Map Kit 框架给几种标准的覆盖层对象定义了覆盖层视图,如果有需要你可以定义别的覆盖层视图。在配置地图界面的时候,你可以在任何时候 添加覆盖层对象。地图视图根据每个覆盖层的数据决定对应的覆盖层视图什么时候需要显示在屏幕上。当覆盖层移进屏幕时,地图视图 请求自己的委托创建对应的覆盖层视图。
- (void) addAnnotation: | (id< MBAnnotation >) | annotation |
- (void) addAnnotations: | (NSArray *) | annotations |
- (void) addOverlay: | (id< MBOverlay >) | overlay |
向地图中添加一个覆盖层。
overlay | 将要添加的覆盖层对象。对象必须遵守MBOverlay协议。 |
- (void) addOverlays: | (NSArray *) | overlays |
向地图中添加一组覆盖层。
overlays | 一组对象,每个对象必须遵守MBOverlay协议。 |
- (NSSet *) annotationsInMapRect: | (MBMapRect) | mapRect |
返回所有位于指定地图矩形内的标注。
mapRect | 你想要搜索标注的地图部分。 |
- (CGPoint) convertCoordinate: | (CLLocationCoordinate2D) | coordinate | |
toPointToView: | (UIView *) | view | |
转换地图坐标到指定视图中的点。
coordinate | 你想找到对应点的地图坐标。 |
view | 你想把指定地图坐标放到它的坐标系的视图。如果这个参数是nil,返回的点将指定在视窗坐标系。如果view不是nil, 它必须和地图视图隶属于同一视窗。 |
- (CLLocationCoordinate2D) convertPoint: | (CGPoint) | point | |
toCoordinateFromView: | (UIView *) | view | |
转换指定视图坐标系中的点到地图坐标。
point | 你想要转换的点。 |
view | 给point参数提供参考坐标系的视图。 |
- (MBCoordinateRegion) convertRect: | (CGRect) | rect | |
toRegionFromView: | (UIView *) | view | |
转换指定视图坐标系中的矩形到地图范围。
rect | 你想要转换的矩形。 |
view | 给rect参数提供参考坐标系的视图。 |
- (CGRect) convertRegion: | (MBCoordinateRegion) | region | |
toRectToView: | (UIView *) | view | |
转换地图范围到指定视图中的矩形。
region | 你想要找到对应视图矩形的地图范围。 |
view | 该视图是你想把指定地图范围放到它的坐标系。如果这个参数是nil,返回的矩形将指定在视窗坐标系。如果view不 是nil,它必须和地图视图隶属于同一视窗。 |
- (MBAnnotationView *) dequeueReusableAnnotationViewWithIdentifier: | (NSString *) | identifier |
通过标识符返回可复用的标注视图。
identifier | 标识标注视图复用的字符串。这和你调用 initWithAnnotation:reuseIdentifier: 方法初始化标注 视图中的标识符是同一字符串。 |
- (void) deselectAnnotation: | (id< MBAnnotation >) | annotation | |
animated: | (BOOL) | animated | |
取消选择指定的标注同时隐藏它的弹出气泡。
annotation | 将要取消选择的标注对象。 |
animated | 如果YES,弹出气泡将动画移出屏幕。 |
- (void) exchangeOverlayAtIndex: | (NSUInteger) | index1 | |
withOverlayAtIndex: | (NSUInteger) | index2 | |
交换两个覆盖层的位置。
index1 | 第一个对象在overlays数组中的索引。 |
index2 | 第二个对象在overlays数组中的索引。 |
- (id) initWithFrame: | (CGRect) | frame | |
withLocal: | (BOOL) | doLocal | |
实例化地图视图。
frame | 地图视图框架 |
doLocal | 是否使用本地缓存数据。 |
插入一个覆盖层到另一个的上面。
overlay | 将要插入的覆盖层。 |
sibling | 一个overlays数组中存在的对象。这个对象必须存在于数组中并且非空。 |
- (void) insertOverlay: | (id< MBOverlay >) | overlay | |
atIndex: | (NSUInteger) | index | |
插入一个覆盖层到和地图关联的覆盖层对象列表中。
overlay | 将要插入的覆盖层。 |
index | 需要插入覆盖层对象的位置索引。如果这个数值大于overlays属性的对象数量,本方法将对象添加到数组的末尾。 |
插入一个覆盖层到另一个的下面。
overlay | 将要插入的覆盖层。 |
sibling | 一个overlays数组中存在的对象。这个对象必须存在于数组中并且非空。 |
调整指定地图矩形的长宽比以确保它和地图视图的框架匹配。
mapRect | 你想要调整宽度和高度的初始地图矩形。 |
加上指定的插值调整指定地图矩形的长宽比。
mapRect | 你想要调整宽度和高度的初始地图矩形。 |
insets | 从地图视图框架实际边框返回的矩形需要插入的距离(屏幕点)。 |
- (MBCoordinateRegion) regionThatFits: | (MBCoordinateRegion) | region |
调整指定范围的长宽比以确保它和地图试图的框架匹配。
region | 你想要调整跨度的初始化范围。 |
- (void) removeAnnotation: | (id< MBAnnotation >) | annotation |
从地图视图中移除指定的标注。
annotation | 将要移除的标注对象。对象必须遵守MBAnnotation协议。 |
- (void) removeAnnotations: | (NSArray *) | annotations |
从地图视图中移除一组指定的标注对象。
annotations | 一组将要移除的标注对象。每个对象必须遵守 MBAnnotation 协议。 |
- (void) removeOverlay: | (id< MBOverlay >) | overlay |
从地图视图中移除一个覆盖层。
overlay | 将要移除的覆盖层对象。 |
- (void) removeOverlays: | (NSArray *) | overlays |
从地图中移除一个或多个覆盖层。
overlays | 一组对象,每个对象必须遵守 MBOverlay 协议。 |
- (void) selectAnnotation: | (id< MBAnnotation >) | annotation | |
animated: | (BOOL) | animated | |
选中指定的标注,并显示弹出气泡。
annotation | 将要选中的标注对象。 |
animated | 如果YES,弹出气泡将动画弹出。 |
- (void) setCenterCoordinate: | (CLLocationCoordinate2D) | coordinate | |
animated: | (BOOL) | animated | |
改变地图的中心坐标,可选采用动画效果改变。
coordinate | 地图的新中心坐标。 |
animated | 如果你想地图视图滚动到新的位置,指定YES;如果你想地图立即显示新的位置,指定NO。 |
- (void) setRegion: | (MBCoordinateRegion) | region | |
animated: | (BOOL) | animated | |
改变当前可视区域,可选采用动画效果改变。
region | 将在地图视图中显示的新范围 |
animated | 如果你想地图视图动画过渡到新的范围,指定YES;如果你想地图立即定位到指定的范围,指定NO。 |
- (void) setRegisterCode: | (NSString *) | registerCode |
设置图吧家园注册码
registerCode | 图吧家园注册码 |
- (void) setVisibleMapRect: | (MBMapRect) | mapRect | |
animated: | (BOOL) | animate | |
改变地图的当前可视部分,可选采用动画效果改变。
mapRect | 将在地图视图中可视的地图矩形。 |
animate | 如果你想地图视图动画过渡到新的地图矩形,指定YES;如果你想地图立即定位到指定的矩形,指定NO。 |
- (void) setVisibleMapRect: | (MBMapRect) | mapRect | |
edgePadding: | (UIEdgeInsets) | insets | |
animated: | (BOOL) | animate | |
改变地图的当前可视部分,同时允许指定边缘额外的间隔。
mapRect | 将在地图视图中可视的地图矩形。 |
insets | 使指定矩形周围额外空间可视的数值(以屏幕点来计算)。 |
animate | 如果你想地图视图动画过渡到新的地图矩形,指定YES;如果你想地图立即定位到指定的矩形,指定NO。 |
- (unsigned long long) totalBytesReceived |
返回地图视图总的数据接收量。
- (unsigned long long) totalBytesSended |
返回地图视图总的数据发送量。
- (MBAnnotationView *) viewForAnnotation: | (id< MBAnnotation >) | annotation |
如果有的话返回和指定标注关联的标注视图。
annotation | 你想要其视图的标注对象。 |
- (MBOverlayView *) viewForOverlay: | (id< MBOverlay >) | overlay |
如果有的话返回和指定覆盖层相关的视图。
overlay | 你想要其视图的标注覆盖层对象。 |
- MBMapView: [read, assign] |
接收者关联的标注的完整列表。
- MBMapView: [read, write, assign] |
地图视图中心的地图坐标。
- MBMapView: [read, write, assign] |
接收者的委托。
- (NSArray*) overlays [read, assign] |
当前和地图视图关联的覆盖层。
- MBMapView: [read, write, assign] |
地图视图当前显示的范围。
- MBMapView: [read, write, assign] |
确定用户是否能够缩放地图的布尔值。
- MBMapView: [read, write, copy] |
当前选中的标注。
- MBMapView: [read, write, assign] |
指示地图是否显示用户位置的布尔值。
- MBMapView: [read, assign] |
指示设备的当前位置在地图视图中是否可视的布尔值。
- (MBMapRect) visibleMapRect [read, write, assign] |
地图视图当前显示的区域。
- MBMapView: [read, write, assign] |
确定用户是否能够通过手势对地图进行缩放的布尔值。