首先,您需要爲您的高爾夫球場收集經度和緯度點。如何做到這一點取決於你,而不是真正的iPhone問題。根據你有多少點來定義球道和果嶺(可能有危險?),你可能想要將所有點存儲在一個XML文件中,這些文件將被捆綁爲應用程序中的一個資源。或者,如果內容需要定期更新,也許將其存儲在網絡服務器上。或兩者。但是,該文件可能是這樣的:
<golf-courses>
<golf-course>
<name>Pebble Peach</name>
<par>72</par>
<fee>$200</fee>
<holes>
<hole>
<number>1</number>
<par>4</par>
<fairway>
<points>
<point><lat>-122.1231231</lat><lon>36.0131231</lon></point>
<point><lat>-122.1231232</lat><lon>36.0131235</lon></point>
<point><lat>-122.1231237</lat><lon>36.0131235</lon></point>
...
</points>
</fairway>
<green>
...
</green>
</hole>
</holes>
</golf-course>
...
</golf-courses>
或者,您可以選擇使用像KML的格式,這是精心設計的地圖疊加。如果您能夠獲取已存儲在KML中的現有高爾夫球場數據,那將會特別有用。但是,從你的問題來看,這聽起來像你試圖從一組航拍地圖中自己推導出數據。
然後,您需要在啓動時將XML數據(或KML或plist數據或Core Data或存儲它)讀取到您的應用程序中。
然後,您可能會有一個遍歷數據的UIViewController,並將該過程繪製爲多邊形。爲此,您的視圖控制器將使用MapKit框架,並且您可能使用MKPolygon
將該課程繪製爲一堆綠色陰影多邊形。您可以在最簡單的MKPolygon
示例上看到other answer I posted。
是的,我有你的想法。非常感謝。你說我們應該在mapview中映射那個位置座標。但我看過一些應用程序,他們只顯示高爾夫球場地圖,而不是完整的谷歌地圖。我們如何做到這一點?如果我們這樣做,我們如何在不使用谷歌地圖的情況下找到該課程地圖上兩個地點之間的距離?因爲在Google地圖中,我們可以在觸摸時獲取位置座標。那我們該怎麼實現呢?提前致謝。 –
我想這取決於你想要做什麼。即使您的應用程序不打算顯示高爾夫球場邊界之外的任何區域,您仍可能需要使用MapKit,因爲它爲您提供了許多有用的功能(如MKOverlays)。如果你根本不使用MapKit,那麼你將不得不重現所有你自己。您仍然可以將課程功能作爲覆蓋圖繪製在MKMapView上,並限制視圖遠離課程。您可以爲整個課程定義一個MKOverlay,然後[使用此解決方案](http://stackoverflow.com/questions/4119117/restrict-mkmapview-scrolling)。 – Nate
但是,如果要顯示課程的非常詳細的高程輪廓,這將創建數千個多邊形,則可能無法使用MapKit(性能)。然後,你應該看看OpenGL ES,這將是更多的工作。但是,你的問題並沒有說你需要這個,所以我假設你可以通過每個洞只有幾個重疊來解決這個問題。如果我的假設不正確,請在您的問題中附加更多描述。謝謝。 – Nate