2013-02-25 3 views
5

Я пытаюсь использовать SDK Google Maps для iOS в представлении основного представления, которое я создал в раскадровке, и связан с контроллером представления через IBOutlet (I называется extraView, подклассом из UIView). Когда я следую инструкциям в руководстве по началу работы с SDK, SDK работает отлично, но он использует самый верхний вид в иерархии (основной вид), чего я не хочу. Я хочу, чтобы моя карта была в меньшей части экрана и использовала остальную часть экрана для чего-то еще. Когда я пытаюсь назначить объект mapView_ (см. Руководство по началу работы) на self.extraView вместо self.view, весь экран черный, и я получаю сообщение об ошибке на выходе консоли:Использование SDK Google Maps в представлениях, отличных от основного вида

«Окна приложений, как ожидается, будут иметь контроллер корневого представления в конце запуска приложения "

Кто-нибудь еще понял это? Я не могу найти что-либо в документации, а пример кода, который предоставляет Google, не использует раскадровку.

ответ

13

Вот как ...

  • добавить UIView в контроллер представления, где вы работаете
  • установить его класс, чтобы быть в инспекторе идентичности GMSMapView.

Затем перетащите его в свой код, как и для любой другой розетки.

Вы можете лениво создать его экземпляр в инкубаторе ...

- (void) setMapView:(GMSMapView *)mapView { 
    if (!mapView) { 
     mapView = [[GMSMapView alloc] initWithFrame:mapView.bounds]; 
    } 
    _mapView = mapView; 
} 

Чтобы отобразить карту пример кода Google, становится ...

GMSCameraPosition *camera = [GMSCameraPosition cameraWithLatitude:1.285 
                  longitude:103.848 
                   zoom:12]; 
    self.mapView = [GMSMapView mapWithFrame:CGRectZero camera:camera]; 
+0

Спасибо за быстрый ответ. К сожалению, я все еще сталкиваюсь с той же проблемой. У меня были некоторые дополнительные материалы в другом другом проекте, поэтому я создал новый проект, следуя указаниям Google к письму. Он работал так, как ожидалось, поэтому я очистил код из метода loadView и точно выполнил ваши указания. Я поместил второй блок кода в метод под названием drawMap, который вызывается методом viewDidLoad с помощью функции performSelector: withObject: afterDelay: после задержки 5. Это показало, что предупреждение появляется до того, как карта будет нарисована. drawMap все еще вызывается, но карта не нарисована. – user2105505

+2

Я понял! Ваше решение отлично работало, я просто забыл удалить пустой метод loadView. Поскольку в нем ничего не было, это вызывало эту ошибку. Благодаря! – user2105505

+0

Это было потрясающе: D – Omarj

3

я решил мою проблему просто удалив код loadview, что я взял из примера. Просто добавление представления, как сказал Сберли, должно работать.

только на вещах более, на инспекторе идентичности, что атрибут, который вы должны изменить это класс, по крайней мере, на Xcode 4.5

+0

Спасибо - я уточнил выше, чтобы отразить ваше предложение – sberley

Смежные вопросы