2013-05-13 160 views
0

纬度:22.744812, 经度:75.892578在纬度/经度点之间更多地计算经度和纬度?

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

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

所以我最终会有4个额外的经纬度。

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

回答

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]; 

您的代码。

0

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

1度lattitude的相当于6371000 * PI /180米

(NB:PI = 3.14159 ...等)。然而,1度的经度取决于你的地位。在赤道上,一个经度对应于相同的以米为单位的距离,与1度的纬度。然而,在北极和南极,所有的经度值是相同的点(即极点本身),因此极点的1度经度为零米。为经度的公式是

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

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