显示地图

理解几何地图

在地图上你要怎么表示点的数据依赖于你想要怎么使用它们.Map Kit支持以下三种基础坐标来表示特定的地图上的点数据:

  • map coordinate(地图坐标):是一种用经纬度来表示的坐标.用CLLocationCoordinate2D结构.你可以用MKCoordinateSpanMKCoordinateRegion结构来表示区域.
  • map point(地图点):墨卡托地图投影上x和y的值.map point用于许多地图相关的计算,而不是地图坐标,因为它们简化了计算中涉及的数学。在你的app里,您主要在指定自定义地图叠加层的形状和位置时使用地图点。你可以用MKMapPoint结构来表示一个单独的map point.你可以用MKMapSizeMKMapRect结构来表示一个区域.
  • Point是和坐标系统相关联的view对象上的平面单位.Map PointMap Coordinates在显示自定义内容前都必须转成Points.用CGPoint结构表示一个单独的点,用CGSizeCGRect来表示一个区域.

坐标系统之间的转换

当你需要时你可以两种坐标系统之间进行转换,比如你要加自定义的覆盖物(overlays)(路线什么的).你要map coordinate转成map point

Convert from Convert to Conversion routines
Map coordinates Points convertCoordinate:toPointToView: (MKMapView),convertRegion:toRectToView: (MKMapView)
Map coordinates Map points MKMapPointForCoordinate
Map points Map coordinates MKCoordinateForMapPoint,MKCoordinateRegionForMapRect
Map points Points pointForMapPoint: (MKOverlayRenderer),rectForMapRect: (MKOverlayRenderer)
Points Map coordinates convertPoint:toCoordinateFromView: (MKMapView),convertRect:toRegionFromView: (MKMapView)
Points Map points mapPointForPoint: (MKOverlayRenderer),mapRectForRect: (MKOverlayRenderer)

把Map view加到用户界面上.

MKMapView一个独立的用于展示地图数据的界面.它能提供展示地图数据,管理用户交互和托管自定义内容.决不要把MKMapView作为父类.
你可以像用普通view一样使用MKMapView.任何加到MKMapView上的子view都会以frame固定住,不会随着地图一样滚动.如果你希望你到到地图上的view也随着地图滚动,你必须使用annotationsoverlays(比如:导航的路线).

配置地图属性

MKMapView类有多个你可以配置的属性.这些属性控制了一些重要的信息,比如当前显示的是哪部分的地图,是否显示3D内容,用户的交互是否允许.

设置地图的显示区域

MKMapViewregion属性控制了地图的当前显示区域.当一个地图刚被创建时,它的显示区域通常是尽可能大的区域.

typedef struct {
   CLLocationCoordinate2D center;
   MKCoordinateSpan span;
} MKCoordinateRegion;

span定义了多大的范围是可见的.它类似于矩形的宽和高,不过它是用度,分,秒来表示的.如果,你指定了一具特定的距离,可以用MKCoordinateRegionMakeWithDistance来创建一个区域数据结构(用"米"来表示,而不是度).
你赋值给region属性的值,通常和最终存在这个属性里的值是不一样的.

显示3D地图

一定要检查一下pitchEnabled属性,看一下是否支持3D.

一个camera对象用以下属性来定义一个3D地图的显示:

  • Altitude(海拔).camera离地表的高度(以米计算).
  • Pitch(斜度).0的pitch代表的是标准的2D地图,camera是垂直向下看.
  • heading.camera的朝向.
  • center.

.....

你可能感兴趣的:(显示地图)