如何设置地图视图的框架 - 在iOS 6的谷歌GMS地图中

时间:2013-03-28 06:17:06

标签: iphone ios google-maps-sdk-ios

我正在尝试在Google地图视图中加载适用于iOS6的地方。 如何设置Map的框架? 目前它是全屏的

 -(void)loadView {

   GMSCameraPosition *camera = [GMSCameraPosition cameraWithLatitude:10.00989
                                                        longitude:76.316142
                                                             zoom:15];
   mapView_ = [GMSMapView mapWithFrame:CGRectZero camera:camera];
   self.view = mapView_;

   }

我尝试在当前视图中创建一个新的(小)视图并在其中添加地图,但此时页面没有加载。它显示一个完整的黑屏

 -(void)loadView {

  GMSCameraPosition *camera = [GMSCameraPosition cameraWithLatitude:10.00989
                                                        longitude:76.316142
                                                             zoom:15];
   mapView_ = [GMSMapView mapWithFrame:CGRectZero camera:camera];

   [self.view Addsubview:newView];
   self.newView = mapView_;

  // I also tried like this - [self.newView Addsubview:mapView_;

   }

5 个答案:

答案 0 :(得分:5)

你可以尝试......对我有用的东西:)

//header file
...
@property (nonatomic, weak) IBOutlet GMSMapView *mapView;
@property (weak, nonatomic) IBOutlet UIView *subview; //viewForMap
...

实施档案

GMSCameraPosition *camera = [GMSCameraPosition cameraWithLatitude:10.8683
                                                            longitude:76.2086 zoom:6
                                                              bearing:0
                                                         viewingAngle:0
                                                                ];
    self.mapView = [GMSMapView mapWithFrame:_subview.bounds camera:camera];
  [_subview addSubview:_mapView];

答案 1 :(得分:1)

很难说你的问题是在这里添加地图视图还是上游的东西。

您是否在-viewDidLoad中设置了断点以确保它被调用?

检查newView的界限以确保它符合您的期望。 newView可见吗?它是self.view的子视图吗?

在尝试确保您的视图在您期望的位置时可以使用的一个技巧是将背景颜色设置为明显的背景颜色,如红色,然后您可以在屏幕上看到它是否符合您的预期。如果你这样做并且看不到红色框,那么你的问题不在于地图,而是在你没有向我们展示的代码的上游某处。

祝你好运。

答案 2 :(得分:1)

创建具有所需帧尺寸的CGRect,并使用方法mapWithFrame:设置MapView框架,然后将mapview添加为主要子视图。以下是解释所有内容的代码。 CGRect fr= CGRectMake(0, 44, 768, 960); mapView_ = [GMSMapView mapWithFrame:fr camera:camera]; mapView_.myLocationEnabled = YES; [self.view addSubview:mapView_];

答案 3 :(得分:0)

我不认为在使用xib时会调用loadView。我没有尝试使用带有xib的Google Maps SDK for iOS,因为我以编程方式创建了所有视图。

也许您可以在viewDidLoad中添加地图视图?例如:

- (void)viewDidLoad 
{
    [super viewDidLoad];

    GMSCameraPosition *camera = [GMSCameraPosition cameraWithLatitude:10.00989
                                                    longitude:76.316142
                                                         zoom:15];
    mapView_ = [GMSMapView 
        mapWithFrame: CGRectMake(
            0, 0, 
            self.newView.frame.size.width, self.newView.frame.size.height)               
        camera: camera];

   [self.newView addSubview: mapView_];
}

答案 4 :(得分:0)

你需要这样做

 -(void)loadView {

    GMSCameraPosition *camera = [GMSCameraPosition cameraWithLatitude:10.00989
                                                        longitude:76.316142
                                                             zoom:15];

    mapView_ = [GMSMapView mapWithFrame:self.newView.bounds camera:camera];

    [self.view addSubview:newView];

    [self.newView addSubview:mapView_];
}