官方文档地址:https://developers.google.com/maps/documentation/ios/start#getting_the_google_maps_sdk_for_ios
要使用GoogleMaps SDK,必须要为你的应用申请一个API KEY,API Key可以让你监视你的应用调用api的情况。api key是免费的,你可以在任何调用Map api的应用中使用,你可以通过在Google APIs Console上提供你应用的包标识(bundle identifier)来获得一个api key,有了api key后,你要把它加到AppDelegate中,下面会讲到。
获取api key的具体步骤:
1、在Google APIs Console上创建一个api工程
2、在打开的api工程页面中选中左边的Services面板,将里面的Google Maps SDK for iOS项的开关打开
3、再选择API Access面板,点击Create new ios key
4、输入一个或多个bundle identifier(每行一个)
5、点击Create创建
6、在页面中找到Key for iOS apps (with bundle identifiers),可以复制里面的api key。api key创建完成。。。。
Google Maps SDK for iOS是一个包含一个资源包的静态框架,下面是添加框架和配置工程的具体步骤:
1、创建一个新工程,不要勾选StoryBoard,一定要用arc
2、将下载好的GoogleMaps.framework包拖到工程的Frameworks文件夹下,记得一定要选中Copy items into destination group's folder.
3、在你的工程中右击添加好的GoogleMaps.framework,选择在文件夹中打开(show in finder)
4、将Resources文件夹下的GoogleMaps.bundle拖到工程中,最好是放到Frameworks文件夹下,导入的时候不要选Copy items into destination group's folder
5、选中工程,选中应用的target
6、打开Build Phases页面,在Link Binary with Libraries分类中,加入以下frameworks:
AVFoundation.framework
CoreData.framework
CoreLocation.framework
CoreText.framework
GLKit.framework
ImageIO.framework
libc++.dylib
libicucore.dylib
libz.dylib
OpenGLES.framework
QuartzCore.framework
SystemConfiguration.framework
7、选中工程中的Build Settings页面
将Architectures里面的默认值改为armv7
在Other Linker Flags中添加-ObjC,如果这些选项不可见,可以在最上面的过滤中选中all
8、最后,把API Key添加到AppDelegate中
导入包:#import <GoogleMaps/GoogleMaps.h>
在.m文件的didFinishLaunchingWithOptions:方法中添加:
[GMSServices provideAPIKey:@"YOUR_API_KEY"];
- (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view. // 创建一个GMSCameraPosition,告诉map在指定的zoom level下显示指定的点 GMSCameraPosition *camera = [GMSCameraPosition cameraWithLatitude:-22.86 longitude:151.20 zoom:6]; mapView_ = [GMSMapView mapWithFrame:CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height) camera:camera]; [self.view addSubview:mapView_]; // 在map中间做一个标记 GMSMarker *marker = [[GMSMarker alloc] init]; marker.position = CLLocationCoordinate2DMake(-22.86, 151.20); marker.title = @"Sydney"; marker.snippet = @"Australia"; marker.map = mapView_; }