2013-06-13 30 views
2

我知道这个问题已经被问过,但没有一个答案对我来说真的很清楚,我也找不到在互联网上的好教程...所以,我想将Google地图放在与主体不同的UIView中,以便能够在顶部显示我的菜单栏。如何把谷歌地图放在一个自定义的UIView

这里是我的实际代码:

#import "MapViewController.h" 
#import <GoogleMaps/GoogleMaps.h> 

@implementation MapViewController 


- (void)viewDidLoad { 

    [super viewDidLoad]; 

    GMSCameraPosition *camera = [GMSCameraPosition cameraWithLatitude:46.809885 
                  longitude:-71.184556 
                   zoom:18]; 
    mapView = [GMSMapView mapWithFrame:CGRectZero camera:camera]; 
    self.view = mapView; 
    mapView.mapType = kGMSTypeHybrid; 

} 

@end 

事实上,地图更是遍布的应用程序。它已经将我的UIView的类设置为GMSKMapView,并创建了一个名称mapView来将我的UIView与控制器链接起来。

我使用的Xcode 4.6.2

谢谢您的帮助!

回答

5

我使用这个代码:

//头文件

@property (strong, nonatomic) IBOutlet UIView *viewForMap; 
@property (nonatomic, strong) IBOutlet GMSMapView *mapView; 
@property (nonatomic, strong) IBOutlet GMSCameraPosition *camera; 

//实现文件

self.camera = [GMSCameraPosition cameraWithLatitude:46.2220 
              longitude:25.2330 zoom:5 
              bearing:0 
             viewingAngle:0 
       ]; 

    self.mapView = [GMSMapView mapWithFrame:_viewForMap.bounds camera:_camera]; 
    self.mapView.delegate = self; 

    [self.viewForMap addSubview:_mapView]; 

UPD

更改地图类型:

self.mapView.mapType = kGMSTypeHybrid; //kGMSTypeNormal kGMSTypeHybrid kGMSTypeSatellite kGMSTypeTerrain 

再次更改相机视图:

_mapView.camera = [GMSCameraPosition cameraWithLatitude:newLat 
                longitude:newLong 
                 zoom:1 
                bearing:0 
               viewingAngle:0 
         ]; 

不要忘记在头文件中加入:

<GMSMapViewDelegate> 
+0

它可以添加,但我不能设置地图类型,坐标和变焦。地图总是在地图类型的视图中显示欧洲,而不是放大到...任何想法,为什么它不工作? –

+0

什么?!更改相机的其他坐标,其他缩放级别等, – TonyMkenu

+0

...编辑答案。 – TonyMkenu

1

首先创建出口Of的UIView

#import <GoogleMapsM4B/GoogleMaps.h> 
@interface ViewController : UIViewController<GMSMapViewDelegate> 
@property (strong, nonatomic) IBOutlet GMSMapView *mapView; 

添加这.h文件

现在.m文件鉴于didload方法

self.mapView.myLocationEnabled = YES; 
self.mapView.mapType = kGMSTypeNormal; 
self.mapView.settings.compassButton = YES; 
self.mapView.settings.myLocationButton = YES; 
self.mapView.delegate = self;