Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c &引用;无法生成完整的帧缓冲区“;使用Google maps SDK for iOS时出错_Objective C_Google Maps Sdk Ios - Fatal编程技术网

Objective c &引用;无法生成完整的帧缓冲区“;使用Google maps SDK for iOS时出错

Objective c &引用;无法生成完整的帧缓冲区“;使用Google maps SDK for iOS时出错,objective-c,google-maps-sdk-ios,Objective C,Google Maps Sdk Ios,搜索这个问题只给了我一些关于opengl的帖子,我对此一无所知 在我的故事板上,我有一个视图,在其中我放置了另一个稍小的UIView对象作为我的地图的容器。这很好,根本不需要太多代码。我将UIView的类设置为GMSMapView。我按住CTRL键并将其拖动以创建对应viewController的出口。在此之后,我创建一个GMSCameraPosition到特定位置。我将插座self.mapView设置为[GMSMapView-mapWithFrame:CGRectZero-camera:cam

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

在我的故事板上,我有一个视图,在其中我放置了另一个稍小的UIView对象作为我的地图的容器。这很好,根本不需要太多代码。我将UIView的类设置为
GMSMapView
。我按住CTRL键并将其拖动以创建对应viewController的出口。在此之后,我创建一个
GMSCameraPosition
到特定位置。我将插座
self.mapView
设置为
[GMSMapView-mapWithFrame:CGRectZero-camera:camera]相机是我指定的相机位置

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


在日志中,我发现错误
未能生成完整的帧缓冲区对象8cd6
,正如我所说的,关于这一点的帖子对我来说毫无意义,我不知道这是什么问题。

我想知道这是否是因为您使用
CGRectZero
帧初始化了地图视图。我认为当视图是视图控制器的根视图时,应该使用
CGRectZero
,这意味着它将被调整到屏幕的完整大小。也许你需要设定一个尺寸,例如:

[GMSMapView mapWithFrame:CGRectMake(0, 0, 300, 300) camera:camera];

我也经历过这个问题。我的解决方案不是很优雅,但很有效。 首先,@sythnesize在viewController.m(@synthesis-mapView=\u-mapView;)中设置您的插座。然后编写一个自定义setter:

- (void)setMapView:(GMSMapView *)mapView {
    if (!mapView) {
        mapView = [[GMSMapView alloc] initWithFrame:CGRectZero];
    }
    _mapView = mapView;
}
这仍然会显示您看到的错误,但是在viewDidLoad(或在view loaded之后调用的其他地方)方法中,设置相机:

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

在一瞬间,地图可能是错误的,但我认为用户看不到它。

有一位朋友帮我解决了问题,谢谢你的回答,但这些答案并不是我最终解决问题的方式

我们使用的代码:

CLLocationDegrees lat = 59.34702;
CLLocationDegrees lon = 18.04053;
GMSCameraPosition *camera = [GMSCameraPosition cameraWithLatitude:lat longitude:lon zoom:10];
[self.mapView setCamera:camera];
我们根本没有摆弄这个框架,因为看起来,视图会自动在我没有指定的位置设置贴图,使用它在故事板中的大小。因此,我们所要做的就是添加相机,如本例所示。这消除了我说的那个错误


如果有人有一个更好的答案,可以更透彻地解释这一点,那就好了。但这是可行的,只需按住ctrl键拖动一个视图,将类设置为
GMSMapView
作为出口,然后添加我编写的代码。

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

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

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

YourViewController.h:

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

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

@end
#导入
#进口
@界面YourViewController:UIViewController
//其他@properties
@属性(强,非原子)IBMOutlet GMSMapView*mapView//链接到情节提要
@结束
YourViewController.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;
}
#导入“YourViewController.h”
#进口
@接口YourViewController()
@结束
/*.. ..其他设置代码*/
-(无效)viewDidLoad{
[超级视图下载];
GMSCameraPosition*摄像机=[GMSCameraPosition摄像机拍摄时纬度:-33.8683经度:151.2086变焦:10];
self.mapView.camera=摄像机;
}
8cd6错误与帧/边界有关(显然)。如果您尝试使用框架初始化,则不会调用(或设置?)某些内容。加载视图将挂起,然后默认为伦敦附近的位置。我没有为这个解决方案编辑setMapView,我只是跳过了设置边界,让故事板来处理这个问题


仍然希望有人找到一个修复程序来清除8cd6错误。

这个错误在我创建GMSMapView子类时出现。我基本上声明了所有的“did*”/“will*”方法,我发现willMoveToWindow和didMoveToWindow之间出现了错误。调试WillMoveToWindows我发现帧为(0,0,0,0)。我基本上添加了这个,错误消失了

- (void)willMoveToWindow:(UIWindow *)newWindow
{
   self.bounds = self.superview.bounds ;
   [super willMoveToWindow:newWindow] ;
}

正如我在提供的答案中所说,根本不需要这一行!谢谢你的帮助!这为我解决了“无法生成完整的帧缓冲区对象8cd6”错误。但由于我的应用程序使用OpenGL,我现在还有其他问题需要解决(地图显示和工作非常完美,但应用程序其余部分的纹理正在消失)。谢谢你的提示。