Core Location

显示地图

2017-04-18  本文已影响40人  轻云绿原

理解几何地图

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

坐标系统之间的转换

当你需要时你可以两种坐标系统之间进行转换,比如你要加自定义的覆盖物(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地图的显示:

.....

上一篇下一篇

猜你喜欢

热点阅读