2013-03-09 95 views
5

我只是有一个问题,似乎无法在任何地方找到它。如何实施iOS谷歌地图SDK

我“新来的iOS开发和尝试使用谷歌地图我的应用程序中。

我去通的例子,他们给你here

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

@implementation DemoViewController { 
    GMSMapView *mapView_; 
} 

- (void)loadView { 
    GMSCameraPosition *camera = [GMSCameraPosition cameraWithLatitude:1.285 
                  longitude:103.848 
                   zoom:12]; 
    mapView_ = [GMSMapView mapWithFrame:CGRectZero camera:camera]; 
    self.view = mapView_; 
} 

@end 

但你可以看到他们成立self.view = mapView_;和UIView类不具备取景功能。

我希望地图是一个UIView我有一个里面是内部的另一个视图控制器

我失去了你吗?无论哪种方式都是一张图片。 enter image description here

因此,在视图(或空白)内部,我希望地图加载。

谢谢你们的帮助。

+0

我只是尝试了他们提供的任何东西,这是一个您制作ViewController并加载地图的示例。 (更新上面) – Claud 2013-03-09 02:53:13

+0

你可以添加你的mapview作为子视图? 'self.view addSubview:mapView' – 2013-03-09 15:40:46

回答

4

我发现了一个适用于我的解决方案,如果有人需要做类似的事情。

我只是使用的容器的视图,然后由单独的UIViewController类(具有google maps sdk code添加地图部分),然后通过使用[self.view addSubview:googleMapsView]; googleMapsView是,我连接到我的容器视图迷上它到我的主视图控制器主ViewController。

6

所以你有一个GMSMapView。您可以在与addSubview:的界面中将一个视图作为另一个视图的子视图。但是,如果我是你,我不会在loadView中做到这一点。 viewDidLoad是最早的好机会。

我认为你真正的问题在于你超前于自己。如果不知道视图是如何工作的,视图控制器的工作方式等等,那么您就试图做到这一点。我建议您在深入了解iOS编程之前,先深入了解一下,然后再进入四英尺。否则,你不知道你的代码(或Google的代码)甚至意味着什么。

+0

你说得对,我需要学习更多,这就是为什么我问。我只想知道做这件事的最好方法是。 – Claud 2013-03-09 03:03:52

+0

嗯,我想我回答了。您需要了解视图和子视图,通过插座获取视图的引用,加载视图控制器的视图并使用实例变量引用插座等等。这就是所有基本的iOS编程内容。它与Google地图无关。当你知道所有这些时,如何将GMSMapView放入你的界面将会非常明显。 – matt 2013-03-09 03:29:28

+0

@matt:在不同的笔记中,您是否知道Google地图应用获得Apple批准的程度如何?我不确定这一点。 – 2013-03-09 03:29:48

4

我做了一件完全一样的东西here

只需通过界面构建​​器添加一个类型为GMSMapView的视图,然后在控制器中设置属性。

1
Please try below code. 
@property (strong, nonatomic) IBOutlet GMSMapView *mapView; 
-(void)addAllPinsOnMapView 
{ 
arrMapPin=[[NSMutableArray alloc] init]; 
for(int i = 0; i < arrOfferList.count; i++) 
{ 
    GMSCameraPosition *cameraPosition=[GMSCameraPosition cameraWithLatitude:[[[arrOfferList objectAtIndex:i] objectForKey:@"latitude"] floatValue] longitude:[[[arrOfferList objectAtIndex:i] objectForKey:@"longitude"] floatValue] zoom:12]; 
    // mapView = [GMSMapView mapWithFrame:CGRectZero camera:cameraPosition]; 
    _mapView.camera = cameraPosition; 
    _mapView.myLocationEnabled=YES; 

    GMSMarker *marker=[[GMSMarker alloc]init]; 
    marker.position=CLLocationCoordinate2DMake([[[arrOfferList objectAtIndex:i] objectForKey:@"latitude"] floatValue], [[[arrOfferList objectAtIndex:i] objectForKey:@"longitude"] floatValue]); 
    marker.title = [[arrOfferList objectAtIndex:i] objectForKey:@"business"]; 
    marker.map=_mapView; 
    _mapView.delegate = self; 
} 
} 
- (void)mapView:(GMSMapView *)mapView didTapInfoWindowOfMarker: 
(GMSMarker *)marker { 
NSPredicate *result; 
result=[NSPredicate predicateWithFormat:@"business CONTAINS[c] %@",marker.title]; 
NSArray * array = [arrOfferList filteredArrayUsingPredicate:result]; 
OfferDetailsViewController *objOfferDetailsViewController = [[OfferDetailsViewController alloc]init]; 
objOfferDetailsViewController.dictOfferDetails=[array objectAtIndex:0]; 
[self.navigationController pushViewController:objOfferDetailsViewController animated:YES]; 
} 
- (IBAction)btnLocateMe:(UIButton *)sender 
{ 
GMSCameraPosition *camera = [GMSCameraPosition cameraWithLatitude:[[[AppDelegate initAppDelegate].DictLocation objectForKey:@"Latitude"] floatValue] longitude:[[[AppDelegate initAppDelegate].DictLocation objectForKey:@"Longitude"] floatValue] zoom:14]; 
[_mapView animateToCameraPosition:camera]; 
} 
+0

尽管此代码可能会回答问题,但提供有关如何解决问题和/或为何解决问题的其他上下文会提高答案的长期价值。 – 2017-10-23 12:31:24