Получите данные Google Maps в iPhone - PullRequest
0 голосов
/ 02 июня 2009

Программируя приложение для iPhone, мне нужно использовать API Карт Google, чтобы получать маршруты и маршруты. К сожалению, Google Maps работает на основе JavaScript.

Есть идеи, как это сделать?

Ответы [ 3 ]

4 голосов
/ 07 июня 2009

Прежде чем сделать это, вы должны знать, что использование данных Карт в платном приложении противоречит Условиям использования Google.

С http://code.google.com/apis/maps/terms.html

9.1. Бесплатный общедоступный доступ к реализации API ваших карт. API ваших карт Реализация должна быть в целом доступно пользователям бесплатно. Вы можете потребовать, чтобы пользователи вошли в Ваша реализация API Карт, если вы делаете не требовать от пользователей уплаты комиссии. Если не вы вошли в отдельную письменное соглашение с Google или получил письменное разрешение Google, Ваша реализация API Карт не должна:

(а) требуется платная подписка или другой платный ограниченный доступ; или (б) работать только за брандмауэром или только во внутренней сети (кроме во время разработки и тестирования фаза).

10.8 использовать API статических карт, кроме как в веб-реализации браузер;

Я включил также раздел 10.8. Это спорный вопрос, так как вы можете утверждать, что UIWebView - это браузер, но все же знать об этом.

Если вы решите пойти дальше и использовать его, следующая действительно хорошая реализация, которая соединяет большую часть кода, который вам нужен, http://code.google.com/p/iphone-google-maps-component/

1 голос
/ 07 июня 2009

Поскольку для запуска приложения в магазине приложений необходимо соблюдать API OS 3.0, вы также можете начать использовать методы API MapKit для встраивания карты Google в ваше приложение без WebView. Вышеупомянутое решение состоит в том, как карты Google раньше были «встроены» в ваше приложение, но теперь вы можете использовать MapKit с OS 3.0.

1 голос
/ 02 июня 2009

Вы можете реализовать это с помощью UIWebView. Когда дело доходит до использования JavaScript для доступа к сервису Google Maps через его API-интерфейсы Google Maps, вы просто используете метод UIWebView:

- (NSString *)stringByEvaluatingJavaScriptFromString:(NSString *)script

Обратите внимание, что вам нужно будет экранировать в строке, представляющей ваш скрипт, все вхождения двойных кавычек по мере необходимости.

В качестве примера следующий метод, необходимый для центрирования карты, взят из главы 12 программирования iPhone SDK Махера Али:

-(void) centerMap:(NSUInteger) index{
    CLLocation *loc = [locations objectAtIndex:index];
    NSString *js = 
    [NSString stringWithFormat:
     @"var map = new GMap2(document.getElementById(\"map_canvas\"));"
     "map.setMapType(G_HYBRID_MAP);"
     "map.setCenter(new GLatLng(%lf, %lf), 18);"
     "map.panTo(map.getCenter());"  
     "map.openInfoWindow(map.getCenter(),"
     "document.createTextNode(\"Loc: (%i/%i), Time: %@\"));", 
     [loc coordinate].latitude, [loc coordinate].longitude,
     index+1, [locations count], 
     [loc timestamp]];
    [webView stringByEvaluatingJavaScriptFromString:js];
}

Также учтите следующее из документации Apple:

Время выполнения JavaScript ограничено 10 секундами для каждой точки входа верхнего уровня. Если ваш скрипт выполняется более 10 секунд, Safari прекращает его выполнение. Это может произойти в произвольном месте в вашем коде, поэтому могут возникнуть непредвиденные последствия. Это ограничение наложено потому, что выполнение JavaScript может привести к блокировке основного потока, поэтому при выполнении сценариев пользователь не может взаимодействовать с веб-страницей.

Выделение JavaScript также ограничено 10 МБ. Safari вызывает исключение, если вы превышаете это ограничение на общее выделение памяти для JavaScript.

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