Поиск и отображение бизнес-местоположений в MKMapView - PullRequest
4 голосов
/ 29 октября 2009

Я пытаюсь найти способ поиска компании, такой как «продуктовые магазины», и отобразить их на карте Google вокруг текущего местоположения пользователя. Раньше это было довольно просто со старым стилем URL запуска местоположения карты яблока, но я не могу выяснить, как это сделать с MKMapView. Я понимаю, что мне нужно использовать классы MKAnnotations, но моя проблема заключается в поиске данных. Я попытался вставить URL-адрес ниже, чтобы получить информацию от Google, но размер данных кажется слишком большим.

http://maps.google.com/maps?q=grocery&mrt=yp&sll=37.769561,-122.412844&z=14&output=kml

Существует ли простой способ установить свойство, которое сообщает MKMapView о поиске ключевого слова и отображении всей соответствующей компании в моем текущем местоположении? Или кто-нибудь знает, как получить эту информацию от Google?

Ответы [ 2 ]

6 голосов
/ 29 октября 2009

Файл KML, возвращаемый этим поиском, содержит много информации. MKMapView не может запросить Google, поэтому у вас есть несколько вариантов:

  1. Используйте данные, которые вы получаете из этого запроса с NSXMLParser, и извлекайте только то, что вас интересует (возможно, название, широту, долготу). KML - это всего лишь версия XML.

  2. Просмотрите документы Google, чтобы найти вызов, который предоставляет более легкий формат данных. Вы можете изменить формат вашего URL на json, но информация в нем та же.

Файл имеет размер около 50 КБ. По моему опыту, загрузка и анализ XML-файла размером 50 КБ по 3G занимает около 5 секунд.

Редактировать: Только что нашел, подумал, что вас это может заинтересовать:

Многие люди передают данные в и из веб-служб на iPhone через JSON. Это намного лучший способ, чем использование XML. Разбор XML на iPhone просто отстой. Это слишком сложно и очень запутанно. В настоящее время приложение YouVersion, Библия, использует JSON для передачи всего с сервера и обратно, и все это прекрасно работает.

Если у вас нет выбора, по крайней мере, используйте JSON. Вот отличная библиотека для JSON, которую я сейчас использую http://code.google.com/p/json-framework/

Отсюда: http://samsoff.es/post/iphone-plist-tutorial/

Вы можете получить JSON, изменив строку запроса следующим образом:

http://maps.google.com/maps?q=grocery&mrt=yp&sll=37.769561,-122.412844&z=14&output=json

Другое редактирование

Вот еще одна библиотека JSON, которая называется Touch JSON. Я использовал это, и это довольно легко реализовать.

https://github.com/acf/TouchJSON

1 голос
/ 12 марта 2010

Вместо использования строки maps?q= лучше использовать официальный API здесь: http://code.google.com/apis/maps/documentation/geocoding/

Ответы JSON об API работают с JSON Parser http://code.google.com/p/json-framework/ лучше (другой URL не возвращает совместимый JSON и не является стандартным API, поэтому может быть более подвержен изменениям).

...