Problème lors de la capture d'écran de GMSMapView sur Google Maps SDK pour iOS

Un object avec lequel je me bats est lorsque j'essaye de prendre une capture d'écran de n'importe quelle partie de GMSMapView (Google Maps SDK iOS). La sortie UIGmagicsGetImageFromCurrentImageContext () UIImage est invisible. J'ai finalement découvert que GMSMapView est rendu avec OpenGL. Sachant cela, j'ai essayé d'utiliser la méthode glReadPixels (). La chose troublante est que je suis capable de récupérer une capture d'écran carte sur le simulateur de l'iPhone très bien, mais quand j'utilise la même méthode sur un appareil réel, il est toujours invisible (iOS 6).

Je me request si quelqu'un a rencontré le même problème? J'ai fait ma part d'enquête. Je n'ai rien trouvé de pertinent dans ma situation. La plupart des solutions generics que j'ai trouvées ont dit que je devrais mettre à jour quelques-uns des attributes CAEAGLLayer. J'ai supposé que GMSMapView me limiterait à find le calque approprié, mais j'ai pu find et mettre à jour le CAEAGLLayer, comme vu ci-dessous:

[(CAEAGLLayer *)[[[mapView_ subviews] objectAtIndex:0] layer] setOpaque: NO]; [(CAEAGLLayer *)[[[mapView_ subviews] objectAtIndex:0] layer] setDrawableProperties:[NSDictionary dictionaryWithObjectsAndKeys: [NSNumber numberWithBool:YES],kEAGLDrawablePropertyRetainedBacking,kEAGLColorFormatRGBA8, kEAGLDrawablePropertyColorFormat,nil]]; 

Les forums ont recommandé qu'en définissant l'atsortingbut OPAQUE de la couche sur NO et que la propriété de sauvegarde conservée sur YES, le problème iOS 6 soit atténué. Il l'a réparé sur le simulateur, mais pas sur l'appareil.

Le dernier correctif que j'ai trébuché dit de mettre à jour le file preserveBackBuffer de la vue OpenGL principale à YES. C'est là que mon expertise technique a pris fin. Je n'ai pas pu find où ou comment mettre à jour la valeur preserveBackBuffer de GMSMapView. Je suppose que c'est la solution qui permettra de remédier à tous mes problèmes de capture d'écran. Semble être uniquement un problème avec les appareils fonctionnant sous iOS 6+.

Quelqu'un at-il une solution de contournement testée pour ce problème?

Dans Google Maps pour iOS v1.1, il existe une class GMSScreenshot qui peut y parvenir.

  UIImage* image = [GMSScreenshot screenshotOfMainScreen]; 

Cela a été supprimé dans v1.2, car la couche de carte peut maintenant être capturée en utilisant les methods de context graphique standard. En supposant que GMSMapView est une sous-vue de 'self':

 - (UIImage *)captureScreen { UIGraphicsBeginImageContextWithOptions(self.frame.size, YES, 0.0f); [self.layer renderInContext:UIGraphicsGetCurrentContext()]; UIImage *image = UIGraphicsGetImageFromCurrentImageContext(); UIGraphicsEndImageContext(); return image; } 

J'ai ouvert un problème sur Google map group pour la capture d'écran de GMSMapView. et ils ont dit

Je crois qu'avec la version 1.1.0, c'est maintenant possible avec GMSScreenshot screenshotOfMainScreen .