Get started
Before you can try the sample code, you must configure your development environment. For more information, see Maps SDK for iOS code samples.
View the code
Swift
import GoogleMaps import UIKit // Sample code for GeoCoder service. class GeocoderViewController: UIViewController { private lazy var mapView: GMSMapView = { let camera = GMSCameraPosition(latitude: -33.868, longitude: 151.2086, zoom: 12) return GMSMapView(frame: .zero, camera: camera) }() private lazy var geocoder = GMSGeocoder() override func loadView() { view = mapView mapView.delegate = self } } extension GeocoderViewController: GMSMapViewDelegate { func mapView(_ mapView: GMSMapView, didLongPressAt coordinate: CLLocationCoordinate2D) { // On a long press, reverse geocode this location. geocoder.reverseGeocodeCoordinate(coordinate) { response, error in guard let address = response?.firstResult() else { let errorMessage = error.map { String(describing: $0) } ?? "<no error>" print( "Could not reverse geocode point (\(coordinate.latitude), \(coordinate.longitude)): \(errorMessage)" ) return } print("Geocoder result: \(address)") let marker = GMSMarker(position: address.coordinate) marker.appearAnimation = .pop marker.map = mapView guard let lines = address.lines, let title = lines.first else { return } marker.title = title if lines.count > 1 { marker.snippet = lines[1] } } } }
Objective-C
#import "GoogleMapsDemos/Samples/GeocoderViewController.h" #import <GoogleMaps/GoogleMaps.h> @implementation GeocoderViewController { GMSMapView *_mapView; GMSGeocoder *_geocoder; } - (void)viewDidLoad { [super viewDidLoad]; GMSCameraPosition *camera = [GMSCameraPosition cameraWithLatitude:-33.868 longitude:151.2086 zoom:12]; _mapView = [GMSMapView mapWithFrame:CGRectZero camera:camera]; _mapView.delegate = self; _geocoder = [[GMSGeocoder alloc] init]; self.view = _mapView; } - (void)mapView:(GMSMapView *)mapView didLongPressAtCoordinate:(CLLocationCoordinate2D)coordinate { // On a long press, reverse geocode this location. __weak __typeof__(self) weakSelf = self; GMSReverseGeocodeCallback handler = ^(GMSReverseGeocodeResponse *response, NSError *error) { [weakSelf handleResponse:response coordinate:coordinate error:error]; }; [_geocoder reverseGeocodeCoordinate:coordinate completionHandler:handler]; } - (void)handleResponse:(nullable GMSReverseGeocodeResponse *)response coordinate:(CLLocationCoordinate2D)coordinate error:(nullable NSError *)error { GMSAddress *address = response.firstResult; if (address) { NSLog(@"Geocoder result: %@", address); GMSMarker *marker = [GMSMarker markerWithPosition:address.coordinate]; NSArray<NSString *> *lines = [address lines]; marker.title = [lines firstObject]; if (lines.count > 1) { marker.snippet = [lines objectAtIndex:1]; } marker.appearAnimation = kGMSMarkerAnimationPop; marker.map = _mapView; } else { NSLog(@"Could not reverse geocode point (%f,%f): %@", coordinate.latitude, coordinate.longitude, error); } } @end
Run the full sample app locally
The Maps SDK for iOS sample app is available as a download archive from GitHub. Follow these steps to install and try the Maps SDK for iOS sample app.
- Run
git clone https://github.com/googlemaps-samples/maps-sdk-for-ios-samples.git
to clone the samples repository into a local directory. Open a terminal window, navigate to the directory where you cloned the sample files, and drill down into the GoogleMaps directory:
Swift
cd maps-sdk-for-ios-samples-main/GoogleMaps-Swift
pod install
open GoogleMapsSwiftDemos.xcworkspace
Objective-C
cd maps-sdk-for-ios-samples-main/GoogleMaps
pod install
open GoogleMapsDemos.xcworkspace
- In Xcode, press the compile button to
build the app
with the current scheme. The build produces an error, prompting you to enter your API key
in the
SDKConstants.swift
file for Swift orSDKDemoAPIKey.h
file for Objective-C. - If you don't yet have an API key, follow the
instructions to set up
a project on the Google Cloud Console and get an API key. When configuring the
key on the Cloud Console, you can
restrict the key to the
sample app's bundle identifier to
ensure that only your app can use the key. The default bundle identifier of
the SDK samples app is
com.example.GoogleMapsDemos
. - Edit the
SDKConstants.swift
file for Swift orSDKDemoAPIKey.h
file for Objective-C and paste your API key into the definition of either theapiKey
orkAPIKey
constant. For example:Swift
static let apiKey = "YOUR_API_KEY"
Objective-C
static NSString *const kAPIKey = @"YOUR_API_KEY";
- In the
SDKConstants.swift
file (Swift) orSDKDemoAPIKey.h
file (Objective-C), remove the following line, because it's used to register the user-defined issue:Swift
#error (Register for API Key and insert here. Then delete this line.)
Objective-C
#error Register for API Key and insert here.
- Build and run the project. The iOS simulator window appears, showing a list of Maps SDK Demos.
- Choose one of the options displayed, to experiment with a feature of the Maps SDK for iOS.
- If prompted to allow GoogleMapsDemos to access your location, choose Allow.