适用于 iOS 的 Google Maps SDK 和使用 Apple 地图的 MapKit 都使用 OpenGL。
适用于 iOS 的 Google Maps SDK 存在一些问题,如果意外的 OpenGL 上下文处于活动状态,可能会导致其崩溃:
http://code.google.com/p/gmaps-api-issues/issues/detail?id=4752 http://code.google.com/p/gmaps-api-issues/issues/detail?id=4752
看来 MapKit 在 OpenGL 上下文方面也存在一些问题:
显示地图时,iOS 6 应用程序在 EAGLContext 中崩溃 https://stackoverflow.com/questions/12670528/ios-6-app-crashes-in-eaglcontext-when-displaying-maps
您可能需要进行一些尝试和错误,看看是否可以找到解决问题的方法。尝试在地图上执行操作之前和/或之后(例如当您释放 Google 地图时)清除当前上下文:
[EAGLContext setCurrentContext:nil]
您还可以尝试在执行操作之前保存之前的上下文,然后再恢复它,例如:
EAGLContext* previousContext = [EAGLContext currentContext];
// Perform map operation here.
[EAGLContext setCurrentContext: previousContext];
当我调查 iOS 版 Google Maps SDK 的问题时,我基本上尝试了这些方法的各种组合,直到找到有效的方法。祝你好运!