我正在浏览MapKit
和CoreLocation
框架的示例示例。我发现这两个结构(MKCoordinateSpan
和CLLocationCoordinate2D
)在声明中是相似的。这些功能有何不同,有人可以请一个例子(使用两者)来清除它们的含义。
谢谢!
答案 0 :(得分:22)
MKCoordinateSpan
定义了在地图上显示的纬度和经度方向上的 span ,即delta。除了一个点,您还可以定义要在地图上显示的区域。
CLLocationCoordinate2D
定义纬度和经度坐标系中的单个点。
例如:
|<---- deltaLat ---->|
|---------------------|---
| | |
| | |
| | |
| | |
| + |deltaLon
| (lat,lon) | |
| | |
| | |
| | |
|---------------------|---
在这里,您可以想象一个中心点(lat,lon)
,其中有deltaLat
和deltaLon
。
因此(lat,lon)
为CLLocationCoordinate2D
而deltaLat, deltaLon
将形成MKCoordinateSpan
。
你是对的,两个结构都以相同的方式定义,但这在两个不同结构具有不同语义的情况下很常见,因此就像你发现的那样单独定义。
答案 1 :(得分:6)
MKCoordinateSpan
被解释为 delta值,而CLLocationCoordinate2D
被解释为点。
例如,假设您要定义一个圆形区域,您可以定义一个中心点及其周围的半径。
在MapKit
中,您可以按MKCoordinateRegion
定义矩形区域。中心点为CLLocationCoordinate2D
(latitude
和longitude
- 两个typedef为double
),垂直和水平增量为MKCoordinateSpan
(latitudeDelta
和longitudeDelta
- 两个typedef double
)