我使用谷歌地图iOS SDK与故事板。应用程序从具有带有地图的根视图控制器的导航视图控制器开始。
@implementation MyViewController
@synthesize btnMyLock;
@synthesize btnNearby;
GMSMapView *mapView_;
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
GMSCameraPosition *camera = [GMSCameraPosition cameraWithLatitude:20
longitude:20
zoom:0];
mapView_ = [GMSMapView mapWithFrame:CGRectZero camera:camera];
mapView_.myLocationEnabled = YES;
self.view = mapView_;
// Creates a marker in the center of the map.
GMSMarker *marker = [[GMSMarker alloc] init];
[marker setIcon:[UIImage imageNamed:@"pin"]];
marker.position = CLLocationCoordinate2DMake(-33.86, 151.20);
marker.title = @"Sydney";
marker.snippet = @"Australia";
marker.map = mapView_;
mapView_.settings.compassButton = YES;
[mapView_ addSubview:btnMyLock];
[mapView_ addSubview:btnNearby];
}
按钮btnMyLock按下表视图控制器。在iOS 7中没关系。但iOS 6我的应用程序崩溃了。有时会崩溃EXC_BAD_ACCESS(代码= 1)或代码= 2
答案 0 :(得分:1)
我使用Autolayout视图的问题。
答案 1 :(得分:0)
您忘记了第4步:“将GoogleMaps.bundle ”从Resources文件夹拖到您的项目中。
我建议将它放在Frameworks组中。出现提示时,确保未选中“将项目复制到目标组的文件夹”。我遇到了同样的问题,并修复了它。
答案 2 :(得分:0)
我不知道是否会导致问题,但我不会这样做:
self.view = mapView_;
只需将mapView_
添加为子视图,例如:
[self.view addSubview:mapView_];
通常,当您对内存管理不善(例如,过早释放对象)时,会导致EXC_BAD_ACCESS崩溃。试着找出崩溃发生的对象。
在代码中创建按钮,而不是作为IBOutlets从xib创建。否则,由于您没有使用xib,因此未加载它们。
答案 3 :(得分:0)
使用Google地图时使用此代码,然后在导航到其他屏幕时检查其是否崩溃。
- (void)dealloc {
[super dealloc];
[mapView_ removeObserver:self
forKeyPath:@"myLocation"
context:NULL];
}