2012-05-15 2 views
2

Я делаю одно приложение gps для гольфа для iPhone. Для этого мне нужно показать карту поля для гольфа на устройстве iPhone. Я искал об этом в Интернете. Существует множество методов и поставщиков услуг для составления карт для гольфа (аэрофотосъемка).Выполнение картирования гольфа в iPhone

Для справки:

http://sites.google.com/site/mapmakerpedia/maps-101/how-to-map-a-golf-course

Кто-то говорит, что мы можем использовать Google образы для этого. Но мой вопрос:

1. How we could bring that golf course map data into iPhone app? 
2. Is there any API or method available for that? 
3. In which format, that golf course map data file will be? 

ответ

1

Во-первых, вам нужно собрать точки широты и долготы для полей для гольфа. Как это сделать, зависит от вас, и не проблема 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. Вы можете увидеть это other answer I posted на самом простом примере MKPolygon.

+0

Да, у меня есть ваши идеи. Большое спасибо. Вы говорите, что мы должны сопоставить координаты местоположения в mapview. Но я видел некоторые приложения, в которых они показывают только карту поля для гольфа, а не полную карту Google. Как мы можем это сделать? Если мы это сделаем, как мы можем найти расстояние между двумя местоположениями на карте курса без использования карты google? Потому что на картах Google мы можем получить координату местоположения, коснувшись ее. Тогда как мы можем это реализовать? Заранее спасибо. –

+0

Я думаю, это зависит от того, что вы хотите сделать. Даже если ваше приложение никогда не предназначено для отображения какой-либо области за пределами поля для гольфа, вы все равно можете использовать MapKit, потому что он дает вам много полезных возможностей (например, MKOverlays). Если вы вообще не используете MapKit, вам придется воспроизвести все это самостоятельно. Вы все еще можете отображать функции курса в виде наложений в MKMapView и ограничивать представление от панорамирования от курса. Вы можете определить один MKOverlay для всего курса, а затем [использовать это решение] (http://stackoverflow.com/questions/4119117/restrict-mkmapview-scrolling). – Nate

+0

Если, однако, вы хотите показать очень подробные контуры возвышения курса, которые создадут тысячи полигонов, вы, вероятно, не сможете использовать MapKit (производительность). Затем вы должны посмотреть на OpenGL ES, который будет намного больше работать. Но, ваш вопрос не сказал, что вам это нужно, поэтому я предполагаю, что вы можете решить эту проблему с помощью всего лишь нескольких наложений на каждое отверстие. Пожалуйста, добавьте более подробное описание к вашему вопросу, если мое предположение неверно. Благодарю. – Nate

Смежные вопросы