2012-04-25 123 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英里的距離,然後獲得地圖點。地球表面距離的公式可能在某處,大概以米或公里爲單位。