You're all set!

To start developing, please head over to our developer documentation.

Activate the Google Maps SDK for iOS

To get you started we'll guide you through the Google Developers Console to do a few things first:

  1. Create or choose a project
  2. Activate the Google Maps SDK for iOS
  3. Create appropriate keys
Continue

Businesses and Other Points of Interest

By default, points of interest (POIs) appear on the base map along with their corresponding icons. POIs include parks, schools, government buildings, and more. In addition, business POIs appear by default on the map when the map type is kGMSTypeNormal. Business POIs represent businesses such as shops, restaurants, hotels, and more.

A POI corresponds to a place, as defined in the Google Places API. For example, recreational parks are POIs, but things like water fountains are generally not POIs (unless they're of national or historic significance).

Listen for click events on POIs

If you want to respond to a user tapping on a POI, implement GMSMapViewDelegate, and implement the mapView(_:didTapPOIWithPlaceID:name:location:) method, as shown in the following example:

Swift

import UIKit
import GoogleMaps

class ViewController: UIViewController, GMSMapViewDelegate {

...

  override func loadView() {
    let camera = GMSCameraPosition.camera(withLatitude: 47.603,
                                          longitude:-122.331,
                                          zoom:14)
    let mapView = GMSMapView.map(withFrame: .zero, camera: camera)
    mapView.delegate = self
    self.view = mapView
  }

  func mapView(_ mapView: GMSMapView, didTapPOIWithPlaceID placeID: String,
               name: String, location: CLLocationCoordinate2D) {
    print("You tapped \(name): \(placeID), \(location.latitude)/\(location.longitude)")
  }

}

Objective-C

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

@interface ViewController ()

@end

@implementation ViewController

...

- (void)loadView {
  GMSCameraPosition *camera = [GMSCameraPosition cameraWithLatitude:47.603
                                                          longitude:-122.331
                                                               zoom:14];
  GMSMapView *mapView = [GMSMapView mapWithFrame:CGRectZero camera:camera];
  mapView.delegate = self;
  self.view = mapView;
}

#pragma mark - GMSMapViewDelegate

- (void)mapView:(GMSMapView *)mapView
    didTapPOIWithPlaceID:(NSString *)placeID
                    name:(NSString *)name
                location:(CLLocationCoordinate2D)location {
  NSLog(@"You tapped %@: %@, %f/%f", name, placeID, location.latitude, location.longitude);
}

@end

For the preceding example it is assumed that you have implemented the GMSMapViewDelegate protocol in the header for your view controller. For more information, see Events.

Show details in an info window

POIs appear on the map by default, but there is no default on-click UI (the API does not automatically display an info window or any other user interface when the user taps a POI). The following example shows how to use a marker to display an info window for a POI:

Swift

// Declare GMSMarker instance at the class level.
let infoMarker = GMSMarker()

// Attach an info window to the POI using the GMSMarker.
func mapView(_ mapView: GMSMapView, didTapPOIWithPlaceID placeID: String,
             name: String, location: CLLocationCoordinate2D) {
  infoMarker.snippet = placeID
  infoMarker.position = location
  infoMarker.title = name
  infoMarker.opacity = 0;
  infoMarker.infoWindowAnchor.y = 1
  infoMarker.map = mapView
  mapView.selectedMarker = infoMarker
}

Objective-C

// Declare a GMSMarker instance at the class level.
GMSMarker *infoMarker;

// Attach an info window to the POI using the GMSMarker.
- (void)mapView:(GMSMapView *)mapView
    didTapPOIWithPlaceID:(NSString *)placeID
                    name:(NSString *)name
                location:(CLLocationCoordinate2D)location {
  infoMarker = [GMSMarker markerWithPosition:location];
  infoMarker.snippet = placeID;
  infoMarker.title = name;
  infoMarker.opacity = 0;
  CGPoint pos = infoMarker.infoWindowAnchor;
  pos.y = 1;
  infoMarker.infoWindowAnchor = pos;
  infoMarker.map = mapView;
  mapView.selectedMarker = infoMarker;
}

Stop POIs from showing on the map

You can hide points of interest (POIs) by applying custom styles to all POIs or to specific categories of POIs.

The following JSON style declaration hides all business POIs on the map:

[
  {
    "featureType": "poi.business",
    "stylers": [
      { "visibility": "off" }
    ]
  }
]

As another example, the following JSON simplifies the display of all categories of POIs:

[
  {
    "featureType": "poi",
    "stylers": [
      { "visibility": "simplified" }
    ]
  }
]

For more details, see the guide to hiding map features with styling.

Send feedback about...

Google Maps SDK for iOS
Google Maps SDK for iOS
Need help? Visit our support page.