2009-06-02 6 views
0

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

Любая идея, как это сделать?

ответ

1

Вы можете реализовать это с помощью UIWebView. Когда речь заходит об использовании JavaScript для доступа к сервису Google Maps с помощью своих API Карт Google, вы просто воспользоваться методом 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.

1

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

4

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

От http://code.google.com/apis/maps/terms.html

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

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

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

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

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