Не удается загрузить представление Google Maps в iOS

Я пытаюсь загрузить вид Google Maps в iOS, следуя руководству здесь

Я создал новый viewController для представления карты с именами iptechMapViewController.h, iptechMapViewController.m и iptechMapViewController.xib.

Вот код в iptechMapViewController.m:

#import "iptechMapViewController.h"

#import <GoogleMaps/GoogleMaps.h>

@interface iptechMapViewController ()
{
    GMSMapView *mapView_;
}

@end

@implementation iptechMapViewController

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    if (self) {
    // Custom initialization
    }
return self;
}

- (void)loadView
{
    GMSCameraPosition *camera = [GMSCameraPosition cameraWithLatitude:-33.8683
                                                        longitude:151.2086
                                                             zoom:6];
    mapView_ = [GMSMapView mapWithFrame:CGRectZero camera:camera];
    mapView_.myLocationEnabled = YES;
    self.view = mapView_;

    GMSMarker *marker = [[GMSMarker alloc] init];
    marker.position = CLLocationCoordinate2DMake(-33.8683, 151.2086);
    marker.title = @"Sydney";
    marker.snippet = @"Australia";
    marker.map = mapView_;
 }

- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view from its nib.

 }

- (void)didReceiveMemoryWarning
{
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
 }

@end

Затем в другом контроллере представления с именем iptechFlipsideViewController.m я пытаюсь показать iptechMapViewController следующим образом:

- (IBAction)showMap:(id)sender
{
 iptechMapViewController *controller = [[iptechMapViewController alloc] initWithNibName:@"iptechMapViewController" bundle:nil];    
[self.view addSubview:controller.view];
}

Но после нажатия кнопки showMap, которая подключена к IBAction showMap, и после того, как iOS запрашивает разрешение на доступ к моему местоположению, появляется оповещение, и я нажимаю OK, после чего ничего не появляется, и в консоли я получаю следующую ошибку:

Failed to make complete framebuffer object 8cd6

Спасибо


person Ali    schedule 07.05.2013    source источник


Ответы (1)


Передача CGRectZero в mapWithFrame работает только в том случае, если представление карты является корневым представлением контроллера корневого представления — в этом случае его размер изменяется в соответствии с размером экрана. В вашем случае, поскольку карта является подвидом, вам нужно будет указать размер при создании вида карты.

person Saxon Druce    schedule 08.05.2013
comment
Отлично. Я изменил это на: mapView_ = [GMSMapView mapWithFrame:CGRectMake(0, 0, 640, 1136) camera:camera]; и теперь это работает. Но что, если я хочу представить карту как контроллер представления навигации? Это не будет отображаться. Я предполагаю, что это как-то связано с вызовом loadview() вместо initWithNibName? - person Ali; 08.05.2013
comment
Я понял. Спасибо еще раз. - person Ali; 08.05.2013