0

我已经与 google maps ios sdk 斗争了几个小时,但我遇到了一个我无法解决的问题。所以这就是正在发生的事情:

我在界面生成器中有一个视图控制器,并用它实现了 .m 和 .h 。视图控制器有一个视图,在该视图内部还有另一个视图,它是保存地图的视图,因此在自定义类的身份检查器中,它被设置为 GMSMapView。

这个视图有一个 .h 实现的出口,它被称为 mapView。在 .m 上,我有以下代码:

  • (void)viewDidLoad

{

[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 因为如果我使用谷歌提供的代码在 loadView 方法上编写代码它可以工作,但这样做的问题是这样是您无法访问我在界面生成器上创建的视图。

非常感谢!

4

1 回答 1

0

因此,我找到了问题的答案,而无需在界面生成器中使用视图,一切都以编程方式完成。这是解决方案:

-(void)viewDidLoad{ [超级 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

}

于 2013-04-10T18:25:27.607 回答