2012-04-25 143 views
1

我有一个CLLoctionCoordinate2D,我想知道点距离它的距离。例如,让我们使用100英里。所以我想计算一下距北面,南面,东面和西面100英里的地点。计算一个位置坐标距另一个坐标一定距离

东方和西方都很容易。我将这两个坐标转换为MKMapPoints并使用distanceInMeters * MKMapPointsPerMeterAtLatitude(latitude)。这对东部和西部来说很好,因为纬度是恒定的。

但是,这不适用于北部和南部。在北部,它低估了它,低估了南部(因为MKMapPointsPerMeterAtLatitude在你移动时正在改变)。我怎么能计算出这些南北点?

+1

你不能通过CLLocation distanceFromLocation来循环和检查真实距离:method?电脑周期不应该太昂贵。 – 2012-04-25 06:43:35

+0

我认为,但我希望找到更优雅的东西。 – 2012-04-25 15:47:50

回答

2

每纬度有60海里。经度也是如此,但仅在赤道。要计算以海里为单位的经度距离,请以经度* 60nm * cos(以弧度为单位的纬度)乘以距离。

计算你的新点数(北100英里,南100英里等),而不是MKMapPoints,然后将你的纬度/经度(CLLocationCoordinate2D?)点转换成MKMapPoints。

0

纬线总是一个恒定的角度分开,从地球的核心,这是他们的点测量。所以你需要做的是计算出他们的距离有多远,然后用它来获得南北100英里的距离,然后获得地图点。地球表面距离的公式可能在某处,大概以米或公里为单位。