MKCoordinateSpan和CLLocationCoordinate2D有什么区别

时间:2012-03-19 13:51:12

标签: ios mapkit core-location

我正在浏览MapKitCoreLocation框架的示例示例。我发现这两个结构(MKCoordinateSpanCLLocationCoordinate2D)在声明中是相似的。这些功能有何不同,有人可以请一个例子(使用两者)来清除它们的含义。

谢谢!

2 个答案:

答案 0 :(得分:22)

MKCoordinateSpan定义了在地图上显示的纬度和经度方向上的 span ,即delta。除了一个点,您还可以定义要在地图上显示的区域。

CLLocationCoordinate2D定义纬度和经度坐标系中的单个点。

例如:

|<---- deltaLat  ---->|
|---------------------|---
|                     | |
|                     | |
|                     | |
|                     | |
|          +          |deltaLon
|      (lat,lon)      | |
|                     | |
|                     | |
|                     | |
|---------------------|---

在这里,您可以想象一个中心点(lat,lon),其中有deltaLatdeltaLon

因此(lat,lon)CLLocationCoordinate2DdeltaLat, deltaLon将形成MKCoordinateSpan

你是对的,两个结构都以相同的方式定义,但这在两个不同结构具有不同语义的情况下很常见,因此就像你发现的那样单独定义。

答案 1 :(得分:6)

MKCoordinateSpan被解释为 delta值,而CLLocationCoordinate2D被解释为

例如,假设您要定义一个圆形区域,您可以定义一个中心点及其周围的半径。

MapKit中,您可以按MKCoordinateRegion定义矩形区域。中心点为CLLocationCoordinate2Dlatitudelongitude - 两个typedef为double),垂直和水平增量为MKCoordinateSpanlatitudeDeltalongitudeDelta - 两个typedef double