HTML5   发布时间:2022-04-27  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了ios – 如何设置在Storyboard中定义的GMSMapView对象的中心位置大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我想将地图的中心初始化为自定义位置.这是我用于初始化的代码

-(void)viewDidLoad{
    [super viewDidLoad];
    //mapView
    GMSCameraPosition *camera = [GMSCameraPosition cameraWithLatitude:41.0109
                                                            longitude:28.998
                                                                 zoom:6];
    self.mapView = [GMsmapView mapWithFrame:CGRectZero camera:camera];
    [self.mapView setCenter:CGPointMake(41.0109,28.998)];
}

当我运行这段代码时,我看到了一张以格林威治为中心的地图,而不是我给相机的位置(41.0109,28.998).

当我调试代码并打印出self.mapView.camera的位置时,这是输出:GMSCameraPosition 0x17742ee0:target:(41.011,28.998)方位:0.000 zoomLevel:6.000 viewingAngle:0.000 lookAhead:0.000.所以我成功设置了相机的位置,为什么它打开格林威治的位置?

编辑:

请注意,mapView是我添加到主页面的子视图(UIView),我试图设置和修改中心位置.@H_197_16@这是我的故事板的快照:

当我尝试@L_625_7@mapView时,我无法设置地图的位置.但是,如果我使用“视图”这是窗口的主视图,我可以成功地更改地图的中心.

原因是什么?

如何设置GMsmapView的启动位置?

编辑2@H_197_16@该项目的源代码可以在here找到

解决方法

最终得到了两个GMsmapView对象.第一个是您在Interface Builder中创建的,第二个是您使用-viewDidLoad方法中的GMSCameraPosition对象以编程方式创建的那个.

似乎self.mapsView引用您在Interface Builder中创建的视图.使用此行分配新的GMsmapView对象时;

self.mapView = [GMsmapView mapWithFrame:CGRectZero camera:camera];

您实际上正在丢失在Interface Builder中创建的那个,因此您尝试更改摄像机位置不起作用,因为您正在将消息发送到错误的对象.

另外,由于在以编程方式创建它之后未将第二个GMsmapView对象添加到视图层次,在-viewDidLoad方法中,您没有在应用程序中看到它.然它可以正确设置相机位置.

所以你有两个选择;

1-从界面构建器中@L_611_17@mapView(并取消绑定其出口),不要触摸代码,而是替换此行;

[self.mapView setCenter:CGPointMake(41.0109,28.998)];

用这条线;

[self.view addSubview:self.mapView];

这样您就可以通过编程方式创建地图视图.

2-不要触摸故事板,但删除此行;

self.mapView = [GMsmapView mapWithFrame:CGRectZero camera:camera];

因此,您将在Interface Builder中创建一个地图视图并进行配置.

然后一切都会好的.

大佬总结

以上是大佬教程为你收集整理的ios – 如何设置在Storyboard中定义的GMSMapView对象的中心位置全部内容,希望文章能够帮你解决ios – 如何设置在Storyboard中定义的GMSMapView对象的中心位置所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。