如何实施iOS Google Maps SDK

时间:2013-03-09 02:41:49

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

我只是有一个问题,似乎无法在任何地方找到它。

我是iOS开发的新手,并尝试在我的应用程序中使用Google地图。

我通过他们给你的例子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类没有视图函数。

我希望地图位于另一个ViewController内的UIView里面

我失去了你吗?这两种方式都是图片。 enter image description here

所以在视图(或空白)内部我希望加载地图。

谢谢大家的帮助。

4 个答案:

答案 0 :(得分:6)

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

我认为你真正的问题是你已经领先于自己了。你试图在不知道视图如何工作,视图控制器如何工作等的情况下做到这一点。我建议你在深入了解之前学习iOS编程,然后才能全身心投入。否则你不知道你的代码(或谷歌的代码)甚至意味着什么。

答案 1 :(得分:4)

如果有人需要做类似的话,我找到了一个适合我的解决方案。

我刚刚使用了容器视图,然后创建了单独的UIViewController类(其中google maps sdk code添加了一个地图部分),然后使用 {{1将其连接到我的主ViewController googleMapsView是我连接到主ViewController的容器视图。

答案 2 :(得分:4)

我做了同样的事情here

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

答案 3 :(得分: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];
}