Я разрабатываю приложение Какао с использованием XCode 4. В одном из окон есть вид вкладки.Предполагается, что на одной из вкладок отображается карта Google Maps для местоположения.Я добавил WebView (каркас WebKit) на вкладку и определил его как выход, чтобы я мог управлять им с помощью контроллера окна.
Мне удалось отобразить URL (maps.google.com) внутри веб-представленияиспользуя следующее:
[[mapView mainFrame] loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"http://maps.google.com"]]];
Однако это не тот результат, который я ищу.В идеале я хочу, чтобы карта была похожа на iPhoto.Из этого учебного пособия я понимаю, что для работы вам понадобится файл HTML на сервере.Поскольку мое приложение является локальным приложением OS X (не связанным с каким-либо сервером), мне было интересно, есть ли какие-либо способы сделать это по-другому и иметь локальный HTML-код в каталоге de приложения (не уверен, как это будет работать с требуемымКлюч API Карт Google, привязанный к URL)?
РЕДАКТИРОВАТЬ:
Я решил часть этого.Вы можете хранить HTML-файл локально (я помещаю свой файл в папку «Supporting Files» моего проекта).Затем вы можете получить доступ к этому файлу, используя следующий код:
NSString *pagePath;
NSBundle *aBundle = [NSBundle mainBundle];
pagePath = [aBundle pathForResource:@"test2" ofType:@"html"];
// make a file: URL out of the path
NSURL *pageURL = [NSURL fileURLWithPath: pagePath];
Следующим шагом будет отображение карты с использованием следующего:
[[mapView mainFrame] loadRequest:[NSURLRequest requestWithURL: pageURL]];
Это отобразит карту внутри моего WebView.В качестве отправной точки я использовал пример из учебника API Карт Google здесь .В этом конкретном примере отображается карта с центром в Стокгольме, Швеция.
Единственное, что мне не удалось решить, - это как получить доступ к функции Javascript, которая отображает карту (в приведенном выше примере это будет initialize ()функция вызывается с использованием тела onload).Для моей ситуации я хочу настроить эту функцию так, чтобы она принимала два параметра, долготу и широту, а затем вызывать ее из моего объекта Objective-C, который отображает карту.Согласно документации Apple, Javascript можно вызывать из Objective-C, используя экземпляр WebScriptObject, который доступен через экземпляр WebView:
id wso = [mapView windowScriptObject];
Затем с помощью callWebScriptMethod: withArguments: нужно уметьвыполнить функцию Javascript.Однако, если я удаляю загрузку тега body и вызываю функцию initialize () Javascript, используя WindowScriptInstance, карта не отображается.Кто-нибудь знает, что я делаю не так?