我一直在与谷歌地图ios sdk争夺几个小时,而且我有一个问题,我无法解决。所以这是正在发生的事情:
我在界面构建器中有一个视图控制器,它有.m和.h implmentation。视图控制器有一个视图,在该视图中有另一个视图,它是保存地图的on,所以在自定义类的身份检查器中它被设置为GMSMapView。
这个视图有.h实现的出口,它叫做mapView。在.m上我有以下代码:
{
[super viewDidLoad];
GMSCameraPosition *camera = [GMSCameraPosition cameraWithLatitude:10.49101
longitude:-66.902061
zoom:4];
self.mapView = [GMSMapView mapWithFrame:[self.mapView bounds] camera:camera];
self.mapView.myLocationEnabled = YES;
GMSMarkerOptions *options = [[GMSMarkerOptions alloc] init];
options.position = CLLocationCoordinate2DMake(-33.8683, 151.2086);
options.title = @"Sydney";
options.snippet = @"Australia";
[self.mapView addMarkerWithOptions:options];
}
正如您所看到的,我创建了相机,然后是具有界面构建器(mapView)上视图边界的地图。现在这是不起作用的:
1)无论我输入什么坐标,地图总是在英格兰开始,我相信(0,0)坐标 2)我的位置没有出现 3)标记也没有出现。 4)重要提示:地图正在出现,但总是在英格兰上空。
老实说我不知道发生了什么,我相信它与 - (void)viewDidLoad有关 因为如果我使用google提供的代码在loadView方法上编写代码就行了,但是这样做的问题是你无法访问我在界面构建器上创建的视图。
非常感谢!
答案 0 :(得分:0)
所以我找到了问题的答案,没有在界面构建器中使用视图,所有都是以编程方式提供的。这是解决方案:
- (无效)viewDidLoad中{ [super viewDidLoad];
mapView = [[GMSMapView alloc] initWithFrame:CGRectZero];
[mapView setFrame:CGRectMake(0, 0, 400, 400)]; ////here you will have to specify the bounds of the view through CGRectMake
GMSCameraPosition *camera = [GMSCameraPosition cameraWithLatitude:10.49101
longitude:-66.902061
zoom:4];
[mapView setCamera:camera];
mapView.myLocationEnabled = YES;
GMSMarkerOptions *options = [[GMSMarkerOptions alloc] init];
options.position = CLLocationCoordinate2DMake(-33.8683, 151.2086);
options.title = @"Sydney";
options.snippet = @"Australia";
[mapView addMarkerWithOptions:options];
[self.view addSubview:mapView];
[self.view sendSubviewToBack:mapView]; // just in case you need to send the map to the back, I do
}