0

纬度:22.744812,经度:75.892578

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

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

所以我最终会得到 4 个额外的纬度/经度对。

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

4

3 回答 3

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

在你的代码上。

于 2013-05-13T10:38:30.467 回答
0

您将不得不使用Haversine 公式根据与起始 Lat/Long 的距离来计算 Lat/Long。看看这个链接

于 2013-05-13T10:25:38.150 回答
0

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

1个纬度相当于6371000*PI/180米

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

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

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

于 2013-05-13T12:03:36.520 回答