Интегрировать API Карт Google в приложение для iPhone - PullRequest
14 голосов
/ 16 февраля 2009

Обновление: iPhone SDk 3.0 теперь решает этот вопрос, однако NDA препятствует всестороннему обсуждению. Войдите в iPhone Dev Center, если вам нужна дополнительная информация.

Хорошо, я должен признать, что я немного потерян здесь.

Мне довольно комфортно с Какао, но у меня проблемы с подбором фрагментов JavaScript, необходимых для решения этой проблемы.

Я пытаюсь отправить запрос в Google на обратный геокод.

Я просмотрел документацию Google, которую просмотрел здесь: http://code.google.com/apis/maps/documentation/index.html http://code.google.com/apis/maps/documentation/geocoding/

Даже после грубого прочтения мне не хватает базовой концепции:

Как мне поговорить с гуглом? В некоторых примерах они показывают URL-адрес, отправляемый в Google (что кажется достаточно простым), но в других они показывают javascript. Кажется, для обратного геокодирования запрос может быть сложнее, чем отправка URL с некоторыми параметрами (но я надеюсь, что я ошибаюсь).

Может кто-нибудь указать мне правильный способ сделать запрос? (В объективе-C я могу обернуть голову вокруг него)

Ответы [ 10 ]

9 голосов
/ 19 февраля 2009

ОБНОВЛЕНИЕ - iPhone 0.3 включает MapKit, который, будем надеяться, будет значительно быстрее, чем при использовании JS API. В сообщении говорится, что оно будет включать обратное геокодирование.

Вы не можете сделать запрос напрямую в target-C, по крайней мере, не в соответствии с условиями API Google. Google API написан на Javascript. Вы можете использовать мост target-c для JS, как это делает Компонент Google Maps , но это не решает проблему - вы все еще делаете вызовы JS!

К сожалению, это означает, что вы а) нужно использовать веб-просмотр б) нужно использовать JS API, который работает медленно ... сравните с приложением Google Maps, которое использует совершенно другой протокол OTA (попробуйте его перехватить).

Компонент Google Maps, тем не менее, является полезным руководством для простых вызовов API.

4 голосов
/ 12 февраля 2011

Я создал SVGeocoder , простой класс обратного геокодера и для iOS. Он использует Google Geocoding API, возвращает объекты SVPlacemark (подкласс MKPlacemark со свойством coordinate) и использует блоки.

Вот как вы геокодируете строку адреса:

[SVGeocoder geocode:addressString
         completion:^(NSArray *placemarks, NSError *error) {
             // do something with placemarks, handle errors
         }];

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

[SVGeocoder reverseGeocode:CLLocationCoordinate2DMake(45.53264, -73.60518)
                completion:^(NSArray *placemarks, NSError *error) {
                    // do something with placemarks, handle errors
                }];
3 голосов
/ 20 февраля 2009

Самый простой способ получить карту Google с помощью Какао - это использовать «Static Maps API». На практике вам нужно подготовить NSURL, который вы используете для связи с Google. Вы возвращаете свою карту как NSData, которую вы преобразуете в NSImage. Обратите внимание, что вы можете выполнять как геокодирование, так и обратное геокодирование. Вы также можете вставлять маркеры на карту. Однако вы теряете все элементы управления, к которым у вас есть доступ, если вы используете их JavaScript API.

Взгляните на их справочное руководство здесь:

http://code.google.com/apis/maps/documentation/staticmaps/

2 голосов
/ 18 марта 2009

Теперь, когда Apple выпустила MapKit API для OS 3.0, я думаю, что на ваш вопрос ответили. Изучив документы по API, я вижу огромный потенциал! Я все еще хотел бы видеть обратное геокодирование веб-сервиса от Google, но Yahoo пока подойдет.

1 голос
/ 23 ноября 2011

Начиная с iOS5, у нас есть следующие опции, как указано в документе для разработчиков: * «Объект геокодера использует сетевой сервис для преобразования значений широты и долготы в удобную для пользователя метку, которая представляет собой набор данных, таких как информация об улице, городе, штате и стране. Обратное геокодирование - это процесс преобразования широта и долгота в метку. Прямое геокодирование - это процесс преобразования информации названия места в значение широты и долготы. Обратное геокодирование поддерживается во всех версиях iOS, но прямое геокодирование поддерживается только в iOS 5.0 и более поздних версиях. "*

Теперь вы можете использовать объект CLGeocoder.

1 голос
/ 20 февраля 2009

К вашему сведению: API обратного геокодирования от Google для запросов по XML не является общедоступным, поэтому его использование запрещено. Единственный законный путь - использовать их JavaScript-API, который, как вы узнали, сложнее сделать в Какао, чем просто отправить HTTP-запрос.

Альтернативы: обратное геокодирование с простыми запросами XML / JSON также доступно из Geonames или Yahoo .

0 голосов
/ 23 июня 2009

http://blog.cloudmade.com/2009/06/12/how-to-get-forward-geocoding-in-iphone-mapkit/

CloudMade, по-видимому, является поставщиком карт / местоположений с открытым исходным кодом - в приведенном выше сообщении в блоге приведены подробные сведения о том, как выполнить прямое геокодирование.

0 голосов
/ 01 апреля 2009

Конечно, большая проблема заключается в том, что в лицензионном соглашении Google и Yahoo указано, что вы не можете использовать эти API в «коммерческих приложениях». не хотел бы публиковать приложение в магазине приложений только для того, чтобы его сняли и предъявили иск Yahoo или Google. При чтении API карты iPhone 3.0 и соответствующей лицензии это не упоминается, но если вы хотите, чтобы приложение работало на телефонах, которые не были обновлены ....

Есть ли ответ на этот вопрос, который не вызовет неприятностей?

0 голосов
/ 20 февраля 2009

На самом деле я не имел в виду обратное геокодирование как «преобразование точки в человекочитаемый адрес», а скорее визуализацию точки с помощью карты Google (которая также может, в зависимости от уровня точности, отображать читаемый человеком адрес). ). Это базовая функциональность, которая требовалась.

На практике я просто хотел предложить API статических карт как простой и быстрый способ:

1) с учетом координат, полученных с GPS-датчика iPhone, получить карту Google, показывающую точку

2) с учетом адреса преобразуйте его в соответствующие географические координаты, а затем используйте координаты для получения карты Google, показывающей указанный адрес

Оба варианта возможны при использовании простых NSURL, включающих статическую карту и гео-сервисы

http://maps.google.com/staticmap? http://maps.google.com/maps/geo?

Передача, конечно, необходимых параметров для предоставления подходящей строки запроса.

С уважением

0 голосов
/ 16 февраля 2009

Также попробуйте взглянуть на компонент карт Google .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...