在主视图以外的视图中使用Google Maps SDK

use*_*505 5 google-maps-sdk-ios

我试图在主视图的子视图中使用Google Maps SDK for iOS,我在故事板中创建并通过IBOutlet链接到视图控制器(我称之为extraView,从UIView子类化).当我按照SDK入门指南中的步骤操作时,SDK工作正常,但它使用层次结构中最上面的视图(主视图),这是我不想要的.我希望我的地图位于屏幕的较小部分,并使用屏幕的其余部分进行其他操作.当我尝试将mapView_对象(请参阅入门指南)分配给self.extraView而不是self.view时,整个屏幕都是黑屏,我在控制台输出中出错:

"在应用程序启动结束时,应用程序窗口应该有一个根视图控制器"

有没有其他人想到这一点?我在文档中找不到任何内容,Google提供的示例代码不使用故事板.

sbe*_*ley 13

这是如何做...

  • 将UIView添加到您正在工作的视图控制器中
  • 将它的类设置GMSMapView为身份检查器.

然后控制 - 将其拖动到您的代码,就像您对任何其他插座一样.

你可以懒惰地在它的setter中实例化它...

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

为了显示地图,Google的示例代码变为......

  GMSCameraPosition *camera = [GMSCameraPosition cameraWithLatitude:1.285
                                                          longitude:103.848
                                                               zoom:12];
  self.mapView = [GMSMapView mapWithFrame:CGRectZero camera:camera];
Run Code Online (Sandbox Code Playgroud)

  • 我想到了!您的解决方案工作得很好,我只是忘了删除空的loadView方法.由于它没有任何内容,它导致了这个错误.谢谢! (2认同)