2013-02-27 13 views
7

La ricerca di questo problema mi ha dato solo post che riguardavano roba opengl di cui non sono a conoscenza.Errore "impossibile creare il framebuffer completo" utilizzando google maps sdk per ios

Sul mio Storyboard, ho una vista in cui ho messo un altro oggetto UIView leggermente più piccolo per fungere da contenitore per la mia mappa. Funziona bene, non molto codice. Ho impostato la classe di UIView come GMSMapView. i CTRL-trascinalo per creare uno sbocco per il viewController corrispondente. Dopo questo, creo un GMSCameraPosition in una posizione specifica. Ho impostato self.mapView, che è la presa, per la fotocamera [GMSMapView mapWithFrame:CGRectZero camera:camera]; che è la posizione della telecamera che ho specificato.

Questo sembra funzionare, l'app si avvia senza errori e la mappa viene mostrata nell'UDiew che ho creato, ma la posizione della telecamera non è quella specificata. E so che la posizione è valida perché se uso self.view invece di self.mapView la mappa appare su tutto lo schermo nella posizione corretta.

Nel registro ottengo l'errore Failed to make complete framebuffer object 8cd6 e come ho detto, i post relativi a questo non avevano alcun senso per me, e non ho idea di quale sia il problema.

L'aiuto sarebbe apprezzato!

risposta

0

Avevo un amico su chi mi ha aiutato, grazie per aver risposto ma quelle risposte non sono il modo in cui alla fine l'ho risolto.

Il codice che abbiamo usato:

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

Non stiamo fiddleing con quel telaio a tutti in quanto, come sembra, la vista imposta automaticamente una mappa in una posizione non specificata da me, utilizzando la dimensione ha nello storyboard. Quindi tutto ciò che dovevamo fare era aggiungere la fotocamera come in questo esempio. Questo si è sbarazzato di quell'errore di cui ho parlato.

Se qualcuno ha una risposta migliore che può spiegare questo in modo più approfondito sarebbe buono. Ma funziona, basta trascinare CTRL una vista con la classe impostata su GMSMapView come presa e aggiungere il codice che ho scritto.

11

Mi chiedo se potrebbe essere perché si inizializza la visualizzazione mappa con una cornice di CGRectZero. Penso che l'uso di CGRectZero debba essere usato quando la vista è la vista radice del controller della vista, il che significa che verrà ridimensionata a tutto schermo. Forse è necessario impostare una dimensione, ad esempio:

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

come ho detto nella risposta che ho fornito, questa linea non era affatto necessaria! Grazie per l'aiuto! – Millenjo

+0

Questo ha risolto l'errore "Impossibile realizzare l'oggetto framebuffer completo 8cd6" per me. Ma poiché la mia app utilizza OpenGL, ho altri problemi da risolvere ora (la mappa viene visualizzata e funziona perfettamente, ma le trame nel resto dell'app stanno scomparendo). Grazie per il consiglio. – aiham

0

Anche io ho riscontrato questo problema. La mia soluzione non è molto elegante, ma funziona. Per prima cosa, @sythnize your outlet in viewController.m (@sinteso mapView = _mapView;). Poi scrivere un setter personalizzato:

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

Questo sarà ancora vi darà l'errore che si è visto, ma poi nel viewDidLoad (o da qualche altra parte che sarà chiamato dopo la vista caricato) metodo, impostare la fotocamera:

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

Per una frazione di secondo, la mappa sarebbe sbagliata, ma non penso che sia visibile all'utente.

2

Per me, questo ottiene il funzionamento della mappa/caricamento delle coordinate corrette, ma continua a generare l'errore 8cd6. Configurazione: Xcode 4.6.1 iOS 6.1 usando lo storyboard

Ho una vista all'interno di una vista principale/viewcontroller.

Assicurarsi che l'UIView (la vista sub che è quello di essere la cartina) nella scheda attributi -> class = GMSMapView ed è legato alla proprietà * MapView sotto

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.m:

errore
#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; 
} 

il 8cd6 ha a che fare con il telaio/limiti (ovviamente). Qualcosa non viene chiamato (o impostato?) Se provi a initWithFrame. Il caricamento della vista si blocca e quindi si imposta automaticamente sul luogo vicino a Londra. Non ho modificato setMapView per questa soluzione, ho semplicemente saltato i limiti e lasciato che lo storyboard si occupasse di ciò.

Ancora spero che qualcuno trovi una correzione che cancella comunque l'errore 8cd6.

+0

Sì, funziona, grazie mille. – Stan

0

Questo errore mi è apparso quando ho sottoclasse GMSMapView. Fondamentalmente ho dichiarato tutti i metodi "did *"/"will *" e ho scoperto che l'errore appariva tra willMoveToWindow e didMoveToWindow. Debugging willMoveToWindow Ho trovato che il frame era (0,0,0,0). Fondamentalmente ho aggiunto questo e l'errore è scomparso.

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