MKMapView 学习总结(一)
来源:互联网 发布:sql注入语句输入哪里 编辑:程序博客网 时间:2024/05/14 14:24
MKMapView
对象提供内嵌的map接口。和maps应用程序提供的类似。你可以使用这个类来显示地图信息并且来通过你的应用程序操控地图内容。你可以通过一个指定的座标来center你的map,指定你想要显示的区域大小。并且自定义map的注释(座标定位后点击大头针显示的内容)。
当你初始化一个map view的时候,你应该指定map显示的初始区域。你通过设置map的region属性来设定。一个区域通过一个center point和一个水平以及垂直的距离来设定,类似于跨度span。这个锚定义了在给定的点上map显示多大范围,以及如果设置缩放等级。指定一个大的span可以使得用户看到一个广阔的地理区域和对应的低等级的缩放。指定一个小的span导致用户看到更狭小的地理区域和对应的更高级别的缩放比例。
除了编程设置span,mkmapview类支持许多标准的用于改变位置和zoom等级的交互。特别的是,map view支持轻打和捏的手势来在map周围滚动和缩小放大。默认支持但是也可以使用scrollEnabled
和zoomEnabled
来关掉这些支持。
你也可以使用投射的map坐标而不是区域来设置一些值。当你投射球体的弧面到一个水平面上时,你得到一个map的两个空间版本,经度线看上去是平行的。为了指定locations和distances,你需要使用MKMapPoint
,MKMapSize
, 和MKMapRect
类型。
尽管你不应当子类化mkmapview类,你可以通过提供delegate对象来获取map view 行为信息。map view调用这些你自定义的delegate方法来得知map状态的改变并且调整自定义注释的显示。注释的显示部分详见Annotating the Map。delegate对象可以是你程序中的任何对象只要符合MKMapViewDelegate
协议。更多信息可以查看MKMapViewDelegate Protocol Reference。
Annotating the Map
一个注释对象可以是符合MKAnnotation
协议的任何的对象。注释对象主要通过你应用程序的数据模块类来实现。这允许你直接操控注释数据而且对map view也是可用的。每一个注释对象包括关于注释地点并且可以在插图编号中显示的信息。
注释对象的描述被一个注释view来操控。这个对象是MKAnnotationView
类实例。一个annotation view负责显示注释信息。例如,maps应用程序使用一个pin图标来指示地图上一个感兴趣的特定地点。(map kit框架在你的应用程序中提供了类似的MKPinAnnotationView
类)你应当也创建包含更大分量的注释views。
因为注释view只有在他们出现在屏幕上时才需要,mkmapview类提供了没有使用的注释views的队列机制。注释views被派发了复用标示符。用于控件复用。这个特点通过单次只使用一小部分数量的注释views的方法实现了提高内存使用的方法。也提高了当map滚动时需要添加新的view来展示滚动效果的效果。
当配置你的map接口时,你i 应该添加你所有的注释对象到正确的地方。map view使用每一个注释对象中的坐标数据来决定哪些注释view需要出现在屏幕中来。当一个注释出现在屏幕上,map view就通知他的delegate来创建对应的注释view。如果你的应用程序有不同类型的注释,他可以区分不同的注释view类来显示各种类型。
Adding Overlays to the Map
你可以使用overlays来在map上呈现内容。一个overlay对象可以是符合MKOverlay
协议的任何对象。一个overlay对象是一个data对象包含需要指定overlay形状和大小以及在map上的位置。overlays可以标示的形状有圆形,长方形,多条分割线和简单或者复杂的多边形。你也可以定义自己的overlays来代替这些形状。
在ios7以及以上版本,overlay的展示通过overlay renderer对象来管控。是一个MKOverlayRenderer
类型的实例。renderer的任务是绘制overlay的内容到屏幕上当被map view要求这么做时。例如,如果你有一个线条的overlay来标示一个bus route,你可以使用polyline renderer来绘制bus route的线条。你也可以定义一个renderer来绘制bus route路线和图标。当指定overlays的时候,你也可以将他们添加到map的指定levels上。允许他们可以在map 内容上面或者下面来绘制。在ios7之前,overlays使用overlay views来绘制,这些属于MKOverlayView
类
Accessing Map Properties
mapType
PropertyzoomEnabled
PropertyscrollEnabled
PropertypitchEnabled
PropertyrotateEnabled
Property
delegate
Property
region
Property
如果值改变region的center coordinate的话也可以导致span显示的改变。因为span表示的distances因为不同的经纬度改变了,地图可能需要调整span来计算新的location。如果你想改变center coordinate但是并不想改变zoom level的话,就要使用centerCoordinate来代替了。
改变合适的值会立即更新map view。当设置这个属性的时候,map可以调整新的region value来适应map的可视区域。这个确保了这个属性的值总是折射出map的可视范围。但是如果你在设置了这个属性后再获得这个属性的值,这个值可能和你设置的不匹配。(你可以使用regionThatFits方法来确保region最终呗map设置了)
- setRegion:animated:
centerCoordinate
Property
- setCenterCoordinate:animated:
可以只改变center coordinate而不改变zoom level
- showAnnotations:animated:
设置可视区域mao可以显示指定的注解们。调用这个方法会更新region属性值。
visibleMapRect
Property
当前map view的可视区域
- setVisibleMapRect:animated:
- setVisibleMapRect:edgePadding:animated:
camera
Property
camera对象定义了一个map表面的点来显示map。可以提供一个类似3d-like的外观。你可以使用camera来旋转map这样他就面向来匹配用户的heading。如果你想使用动 画效果来显示camera位置,就使用方法setCamera:animated:
来取代
- setCamera:animated:
showsPointsOfInterest
Property
boolean值来指示是否map显示point-of-interest信息。当这个属性设置为yes的时候,map会为restaurants, schools, and other relevant points of interest.显示icons和labels。
showsBuildings
Property
boolean值来指示是否显示被挤压的建筑物信息。如果是yes并且camera的螺旋角大于0,map积压建筑物,这样就会将这些建筑物以3d的效果呈现在map上。maptype必须设置为standard类型才可以有这种效果。默认值是yes。
showsCompass
Property
来指示是否显示指南针。在os x中,使用这个属性来呈现或者隐藏使得用户可以改变map的heading方向
showsZoomControls
Property
来指示是否显示zoom调节的控件。这个属性可以允许用户来调整zoom level
Displaying the User’s Location
showsUserLocation
Property
boolean值来指明是否map应当显示用户的locaiton。这个属性并不指明是否用户的位置在map上显示。只指明map view是否应当显示。设置成yes会让map view使用core location框架来找到当前的位置并且显示在地图上。只要设置为yes,map view就会持续跟踪用户的locaiton并且阶段性地来更新他。默认值是no。
显示用户地locaiton并不保证locaiton在map中就会出现在显示区域。user可能滚动了map导致当前地位置滚动出了屏幕。可以使用userLocationVisible
属性来判断是否用户地current locaiton出现在了map上。
userLocationVisible
PropertyuserLocation
Property
注解对象用来表示用户的当前位置
Annotating the Map
annotations
Property- addAnnotation:
添加一个annotation
- addAnnotations:
- removeAnnotation:
- removeAnnotations:
- viewForAnnotation:
返回和这个annotation对象关联的annotation view。如果view没有创建那么会返回nil。如果annotation没有在地图的显示范围中也会返回nil。
- annotationsInMapRect:
annotationVisibleRect
Property- dequeueReusableAnnotationViewWithIdentifier:
Managing Annotation Selections
selectedAnnotations
Property
当前被选中的annotations。
- selectAnnotation:animated:
选择指定的annotition并且显示一个callout view。
- deselectAnnotation:animated:
Accessing Overlays
overlays
Property- overlaysInLevel:
- rendererForOverlay:
Adding and Inserting Overlays
- addOverlay:level:
- addOverlays:level:
- addOverlay:
- addOverlays:
- insertOverlay:atIndex:level:
- insertOverlay:atIndex:
- insertOverlay:aboveOverlay:
- insertOverlay:belowOverlay:
- exchangeOverlay:withOverlay:
- exchangeOverlayAtIndex:withOverlayAtIndex:
Removing Overlays
- removeOverlay:
- removeOverlays:
Converting Map Coordinates
- convertCoordinate:toPointToView:
将map座标转换成指定view中的一点。这个点对应特定的经纬度值。
- convertPoint:toCoordinateFromView:
将特定view中的一点转换成map中的座标。
- convertRegion:toRectToView:
将一个map区域转换成指定view中的巨型区域。
- convertRect:toRegionFromView:
将特定view座标系统中的矩形区域转换成一个地图区域
Adjusting Map Regions and Rectangles
- regionThatFits:
- mapRectThatFits:
- mapRectThatFits:edgePadding:
Constants
MKMapType
MKOverlayLevel
- MKMapView 学习总结(一)
- MKMapView 学习总结(二)
- MKMapView 学习总结(三)
- MKMapView 学习总结(四)
- MKMapView 学习总结(五)
- MKMapView学习笔记
- MKMapView的学习
- MKMapView的基础学习
- iOS 苹果地图 MKMapView总结
- MKMapView
- 第四篇 iOS MKMapView的总结
- IOS开发学习:MKMapView自定义CalloutView
- 学习php总结(一)
- jabber学习总结一
- OpenMP学习总结一
- iptables学习总结(一)
- oracle学习总结(一)
- 学习OpenGL总结一
- android Gsm通话状态机和相关数据结构
- Andriod EditText 属性学习
- Lua笔记:MenuItem 菜单被按后替换新的图片资源
- hibernate的hql查询语句总结
- python下载百度音乐
- MKMapView 学习总结(一)
- 关于List每一项改变状态出现混乱的解决办法
- 用户认证和安全
- 如何在Mac OS X上安装 Ruby运行环境
- 关于nginx支持thinkphp框架的配置
- 数据库到底用不用外键
- PHP学习遇到的问题
- iOS Simulator功能介绍关于Xamarin IOS开发
- 文件系统的类别