9

搜索这个问题只给了我关于 opengl 东西的帖子,我对此一无所知。

在我的 Storyboard 上,我有 1 个视图,我在其中放置了另一个稍小的 UIView 对象作为我的地图的容器。这工作正常,根本没有多少代码。我将 UIView 的类设置为GMSMapView. 我按住 CTRL 并拖动它来创建一个到相应 viewController 的出口。在此之后,我创建GMSCameraPosition一个特定位置。我将self.mapView作为出口的 设置为[GMSMapView mapWithFrame:CGRectZero camera:camera];camera 是我指定的相机位置。

这似乎可行,应用程序启动时没有错误,地图显示在我创建的 UIView 中,但是,相机位置不是我指定的位置。而且我知道该位置是有效的,因为如果我使用self.view而不是self.mapView地图显示在整个屏幕上的正确位置。

在日志中我得到了错误Failed to make complete framebuffer object 8cd6,正如我所说,关于这个的帖子对我来说毫无意义,我不知道这是什么问题。

4

5 回答 5

12

我想知道是否可能是因为您使用CGRectZero. 我认为 usingCGRectZero意味着当视图是视图控制器的根视图时使用,这意味着它将被调整为屏幕的完整大小。也许你需要设置一个大小,例如:

[GMSMapView mapWithFrame:CGRectMake(0, 0, 300, 300) camera:camera];
于 2013-02-27T12:31:05.097 回答
2

对我来说,这可以让地图工作/加载正确的坐标,但仍然会引发 8cd6 错误。设置:Xcode 4.6.1 iOS 6.1 使用情节提要

我在主视图/视图控制器中有一个视图。

确保属性选项卡下的 UIView(将成为地图的子视图)->class = GMSMapView 并链接到下面的属性 *mapView

你的视图控制器.h:

#import <UIKit/UIKit.h>
#import <GoogleMaps/GoogleMaps.h>
@interface YourViewController : UIViewController

//other @properties
@property (strong, nonatomic) IBOutlet GMSMapView *mapView;//linked to storyboard

@end

你的视图控制器.m:

#import "YourViewController.h"
#import <GoogleMaps/GoogleMaps.h> 
@interface YourViewController()
@end

/*.. ..other setup code ..*/

-(void)viewDidLoad{
    [super viewDidLoad];
    GMSCameraPosition *camera = [GMSCameraPosition cameraWithLatitude:-33.8683 longitude:151.2086 zoom:10];
    self.mapView.camera = camera;
}

8cd6 错误与框架/边界有关(显然)。如果您尝试 initWithFrame,则不会调用(或设置?)某些东西。加载视图挂起,然后默认到伦敦附近的地方。我没有为此解决方案编辑 setMapView,我只是跳过了设置边界并让情节提要来处理。

仍然希望有人找到解决 8cd6 错误的修复程序。

于 2013-03-24T06:03:17.390 回答
0

我也一直遇到这个问题。我的解决方案不是很优雅,但它有效。首先,@sythnesize 你在 viewController.m 中的插座(@synthesize mapView = _mapView;)。然后编写一个自定义设置器:

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

这仍然会给您看到您看到的错误,但是然后在 viewDidLoad(或在视图加载后将调用的其他地方)方法中,设置相机:

self.mapView.camera = [GMSCameraPosition cameraWithLatitude:3 longitude:27 zoom:13];

一瞬间,地图会出错,但我认为用户看不到它。

于 2013-02-27T13:53:12.837 回答
0

有一个朋友帮助过我,谢谢你的回答,但这些答案并不是我最终解决的方式。

我们使用的代码:

CLLocationDegrees lat = 59.34702;
CLLocationDegrees lon = 18.04053;
GMSCameraPosition *camera = [GMSCameraPosition cameraWithLatitude:lat longitude:lon zoom:10];
[self.mapView setCamera:camera];

我们根本没有摆弄那个框架,因为看起来,视图会自动在我未指定的位置设置地图,使用它在故事板中的大小。所以我们所要做的就是像这个例子一样添加相机。这摆脱了我谈到的那个错误。

如果有人有更好的答案可以更彻底地解释这一点,那就太好了。但这行得通,只需 ctrl 拖动一个将类设置为的视图GMSMapView作为插座并添加我编写的代码。

于 2013-02-27T14:08:41.020 回答
0

当我继承 GMSMapView 时,这个错误出现在我面前。我基本上声明了所有的“did*”/“will*”方法,我发现willMoveToWindow和didMoveToWindow之间出现了错误。调试willMoveToWindow发现frame是(0,0,0,0)。我基本上添加了这个,错误消失了。

- (void)willMoveToWindow:(UIWindow *)newWindow
{
   self.bounds = self.superview.bounds ;
   [super willMoveToWindow:newWindow] ;
}
于 2013-04-25T20:30:15.863 回答