5

我正在尝试使用 CLLocation 创建一个类似于圆半径的区域。我了解半径逻辑以及它如何以米为单位进行测量,但在 MKCoordinate 区域以及 delta 和 lat delta 转换为区域的时间并不那么清楚。我想获得一个 75 英里的区域。这是我的代码....

let center = CLLocationCoordinate2D(latitude: location.coordinate.latitude, longitude: location.coordinate.longitude)
let region = MKCoordinateRegion(center: center, span: MKCoordinateSpan(latitudeDelta: 0.01, longitudeDelta: 0.01))

如果您可以提供解释,而不仅仅是简短的回答,我们将不胜感激。

4

2 回答 2

4

您可以使用MKCoordinateRegionMakeWithDistance函数:

从指定的坐标和距离值创建一个新的 MKCoordinateRegion。

func MKCoordinateRegionMakeWithDistance(
_ centerCoordinate: CLLocationCoordinate2D, 
_ latitudinalMeters: CLLocationDistance, 
_ longitudinalMeters: CLLocationDistance) -> MKCoordinateRegion

centerCoordinate - 新坐标区域的中心点。

latitudinalMeters - 用于跨度的南北距离量(以米为单位)。

纵向米 - 用于跨度的东西距离量(以米为单位)。

所以你会有类似的东西:

let rect = MKCoordinateRegionMakeWithDistance(center, 50 * 1609.34, 50 * 1609.34)
于 2016-12-17T22:08:22.213 回答
4

如果您尝试创建一个实际的圆形区域:

let center = CLLocationCoordinate2D(latitude: location.coordinate.latitude, longitude: location.coordinate.longitude)
let radius: CLLocationDistance = 60350.4    // meters for 37.5 miles
let regionIdentifier = "CircularRegion"     // any desired String

let circularRegion = CLCircularRegion(center: center, radius: radius, identifier: regionIdentifier)
于 2016-12-17T23:18:53.017 回答