首先,您需要为您的高尔夫球场收集经纬度点。如何做到这一点取决于您,而不是真正的 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