2

我通过 Googla Maps iOS SDK 实现了 GMSMapView

Google 的示例代码建议或多或少地声明视图,只需在代码中删除此方法

- (void)loadView {
    // Create a GMSCameraPosition that tells the map to display the
    // coordinate -33.86,151.20 at zoom level 6.
    GMSCameraPosition *camera = [GMSCameraPosition cameraWithLatitude:-33.86
                                                            longitude:151.20
                                                                 zoom:6];
    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.position = CLLocationCoordinate2DMake(-33.86, 151.20);
    marker.title = @"Sydney";
    marker.snippet = @"Australia";
    marker.map = mapView_;
}

它会自动工作,但是 mapView 恰好覆盖了我的 navigationItem 很明显,地图在 initWithFram:CGRectZero 处采用了它的尺寸,但只是将参数更改为自定义 CGRect

CGRect square = CGRectMake(100, 100, 100, 100);

对我没有用,还有其他建议吗?我只需要显示导航项和标签栏之间的地图(但第二个恰好没有被覆盖)

谷歌地图覆盖导航栏

4

2 回答 2

2

问题是 mapView_ 被设置为整个视图

self.view = mapView_;

计算正确的尺寸并将其添加为子视图是解决它的正确方法

CGRect f = self.view.frame;
CGRect mapFrame = CGRectMake(f.origin.x, 44, f.size.width, f.size.height);
mapView_ = [GMSMapView mapWithFrame:mapFrame camera:camera];
[self.view addSubview:mapView_];
于 2013-06-28T10:26:12.530 回答
1

确保地图的视图控制器是UINavigationController. 将UITabBarController带有地图和列表选项卡的 a 推送到嵌入在UINavigationController. 这样导航栏视图只属于UINavigationController地图控制器视图不应该覆盖它。

于 2013-06-25T23:51:53.243 回答