2011-08-11 40 views
0

我想創建一個MKCoordinateRegion(用於放大地圖上的好區域),由Google提供的東北和西南點。爲此,我需要計算這兩個座標之間的中心座標。任何線索?我可以做簡單的數學,但我會遇到赤道問題...iOS - 兩個座標的中心位置

謝謝!

+0

這些答案有幫助嗎? – Craig

回答

-1

This SO post有縮放地圖視圖以適應其所有註釋的代碼。

+0

謝謝,但它似乎在赤道上有問題... – ncohen

+0

你是指赤道還是反梅里達?由於緯度連續,所以沒有理由在赤道上遇到問題。 – Craig

0

假設你的意思是反經絡而不是赤道,那麼這裏就行了(儘管所有這些工作都在一張平坦的地圖上,並且應該足夠用於你的目的,但它完全嵌套在一個球體上,見底部的註釋)。

我在其他情況下,做什麼是開始在任一點,如果下一個點超過180度以東,我把它轉換,使其低於180到西,像這樣

如果(pointa.lon - pointb.lon> 180) pointb.lon + = 360: 否則如果(pointa.lon - pointb.lon < -180) pointb.lon - = 360

此時pointb.lon可能是一個無效的經度,如190,但你至少可以計算出點與點b之間的中點,因爲它們將是連續的,所以你可能有點175和190。得到他們之間的中點爲182.5,然後將其轉換以確保它在正常範圍內,並且得到-177.5作爲兩點之間的緯度。制定緯度很簡單。

當然在球體上這是錯誤的,因爲(-180,89)和(180,89)之間的中點是(0 *,90)而不是(0.89)。
* =可以是任何東西

-1

另外,你不能只是zoomToRect與定義的角落?這會節省你做這個計算,然後下一個計算你需要在什麼縮放級別的中心位置,包括你知道的兩個角落。由於地圖應用似乎沒有滾過反經絡,所以我認爲MKMapview不能這樣做,所以你的矩形必須有東北座標作爲右上角和西南左下角。

+0

請不要讓更多的帖子添加到您的答案;只是編輯你以前的答案。這裏的問題和答案不像論壇中的線索。 –

+0

我覺得我的答案是解決問題的兩種不同方式,因此他們分開輸入,以便用戶可以選擇哪一個最好。但是看起來他們已經在其他地方徘徊了,而沒有對其中的任何一個發表評論,所以我們永遠不會知道哪一個可以工作。 – Craig