Не удается загрузить представление Google Maps в iOS
Я пытаюсь загрузить вид карт Google в 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, которая подключена к showMap IBAction, и после того, как iOS запрашивает разрешение на доступ, появляется мое предупреждение о местоположении, и я нажимаю OK, после этого ничего не появляется, и в консоли я получаю следующую ошибку "
Failed to make complete framebuffer object 8cd6
Спасибо
1 ответ
Переходя CGRectZero
в mapWithFrame
работает только в том случае, если представление карты является корневым представлением контроллера корневого представления - в этом случае оно изменяется по размеру экрана. В вашем случае, поскольку карта является подпредставлением, вам нужно будет указать размер при создании вида карты.