我正在苦恼这个问题!
我想把谷歌地图 GMSMapView
添加到一个 UIView
中,这个视图只是我的 ViewController
的主要 UIView
的一部分。
这应该很简单... 我使用故事板创建了一个所需大小的 UIView
并将其放入主 UIView
中。
接口文件中的代码片段:
@interface MapViewController : UIViewController <CLLocationManagerDelegate>
@property(nonatomic) IBOutlet GMSMapView *mapView;
将地图视图与主 UIView
中的此 UIView
相关联。
在实现中我做了什么:
@synthesize mapView = _mapView;
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view.
GMSCameraPosition *camera = [GMSCameraPosition cameraWithLatitude:-33.8683
longitude:151.2086
zoom:10];
_mapView = [GMSMapView mapWithFrame:_mapView.bounds camera:camera];
_mapView.myLocationEnabled = YES;
}
这应该可以工作,不是吗?但我得到的是我的内部UIView为空。
如果我按照谷歌的入门指南实例化地图Google 地图集成文档,它可以工作,但它会将地图分配给主 UIView,这是一个不同的事情。
我甚至尝试在故事板中将mapView的类从UIView
更改为GMSMapView
,地图显示在内部视图中,但以奇怪的方式初始化,导致
- 系统抛出一个错误,说
"Failed to make complete frame buffer"
并且大大减慢了视图的加载速度(模拟器上需要2-3秒)
- 在
viewDidLoad
方法中进行的任何相机更改地图都没有响应。
有什么建议吗?
我在StackOverflow上阅读了一些帖子,但找不到有效的解决方案:(
option 2
中提到的自定义框架编程方式创建GMSMapView
,请在loadView
方法中执行此操作,而不是在viewDidload
方法中,并且不要忘记添加[super loadView];
,这样它就可以工作了! - Ketan Parmar