在纬度/经度点之间更多地计算纬度和经度?

时间:2013-05-13 10:14:36

标签: iphone ios objective-c math location

纬度:22.744812, 经度:75.892578

以上将被视为我的中心点。

现在我需要确定从中心点1000米向外到每个NSWE角落的纬度和经度点。所以我会有一个中心长/纬,N,S,E和W长/纬..

所以我最终会增加4对纬度/长对。

我想要解决的是一个公式,最好是可以在标准计算器上完成,以根据中心点确定这4个NSWE点。

3 个答案:

答案 0 :(得分:3)

你可以使用MapKit:

- (CLLocationCoordinate2D *) calculateSquareCoordinates:(CLLocation*)center withRadius:(float)radius{

    MKCoordinateRegion region = MKCoordinateRegionMakeWithDistance(center.coordinate, radius*2, radius*2);

    CLLocationCoordinate2D  points[4];

    points[0] = CLLocationCoordinate2DMake(region.center.latitude - region.span.latitudeDelta/2, region.center.longitude - region.span.longitudeDelta/2);
    points[1] = CLLocationCoordinate2DMake(region.center.latitude + region.span.latitudeDelta/2, region.center.longitude - region.span.longitudeDelta/2);
    points[2] = CLLocationCoordinate2DMake(region.center.latitude + region.span.latitudeDelta/2, region.center.longitude + region.span.longitudeDelta/2);
    points[3] = CLLocationCoordinate2DMake(region.center.latitude - region.span.latitudeDelta/2, region.center.longitude +  region.span.longitudeDelta/2);

    return points;
}

然后致电

CLLocationCoordinate2D *fourPoints = [self calculateSquareCoordinates:center withRadius:1000];

代码。

答案 1 :(得分:0)

您必须使用Haversine formula根据起始纬度/经度的距离计算纬度/经度。看看这个Link

答案 2 :(得分:0)

地球的平均半径约为6371000米。这意味着

1度数相当于6371000 * PI / 180米

(注意:PI = 3.14159 ......等)。但是,1度经度取决于你的格度。在赤道,一度经度对应于相同的距离,以米为单位。但是,在北极和南极,所有经度值都是相同的点(即极本身),因此极点的1度经度为零米。经度的公式是

1度经度相当于637100 * PI / 180 * COS(纬度)

其中COS是三角余弦函数。如果您进行这些转换,则可以在标准计算器上进行计算。但请注意,这些近似值在短距离(例如小于几百公里)内运行良好,但在长距离(例如数千公里)内,它们变得越来越不准确。