This example displays a map with pins for markers on Sydney and Melbourne,
Australia.

## 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](https://developers.google.com/maps/documentation/ios-sdk/examples.md.txt).

## View the code


### Swift

```swift
import GoogleMaps
import UIKit

// Sample code for adding a marker.
class MarkersViewController: UIViewController {
  private lazy var sydneyMarker = GMSMarker(
    position: CLLocationCoordinate2D(latitude: -33.8683, longitude: 151.2086))

  private lazy var melbourneMarker = GMSMarker(
    position: CLLocationCoordinate2D(latitude: -37.81969, longitude: 144.966085))

  private lazy var mapView: GMSMapView = {
    let camera = GMSCameraPosition(latitude: -37.81969, longitude: 144.966085, zoom: 4)
    return GMSMapView(frame: .zero, camera: camera)
  }()

  override func loadView() {
    view = mapView

    sydneyMarker.title = "Sydney"
    sydneyMarker.snippet = "Population: 4,605,992"
    sydneyMarker.isFlat = false
    sydneyMarker.rotation = 30
    print("sydneyMarker: \(sydneyMarker)")

    let australiaMarker = GMSMarker(
      position: CLLocationCoordinate2D(latitude: -27.994401, longitude: 140.07019))
    australiaMarker.title = "Australia"
    australiaMarker.appearAnimation = .pop
    australiaMarker.isFlat = true
    australiaMarker.isDraggable = true
    australiaMarker.groundAnchor = CGPoint(x: 0.5, y: 0.5)
    australiaMarker.icon = UIImage(named: "australia")
    australiaMarker.map = mapView

    mapView.selectedMarker = sydneyMarker
    navigationItem.rightBarButtonItem = UIBarButtonItem(
      barButtonSystemItem: .add, target: self, action: #selector(tapAdd))
  }

  @objc func tapAdd() {
    if sydneyMarker.map == nil {
      sydneyMarker.map = mapView
    } else {
      sydneyMarker.map = nil
    }
    melbourneMarker.title = "Melbourne"
    melbourneMarker.snippet = "Population: 4,169,103"
    melbourneMarker.map = mapView
  }
}
      
```

### Objective-C

```objective-c
#import "GoogleMapsDemos/Samples/MarkersViewController.h"

#import <GoogleMaps/GoogleMaps.h>

@implementation MarkersViewController {
  GMSMarker *_sydneyMarker;
  GMSMarker *_melbourneMarker;
  GMSMarker *_fadeInMarker;
}

- (void)viewDidLoad {
  [super viewDidLoad];
  GMSCameraPosition *camera = [GMSCameraPosition cameraWithLatitude:-37.81969
                                                          longitude:144.966085
                                                               zoom:4];
  GMSMapView *mapView = [GMSMapView mapWithFrame:CGRectZero camera:camera];

  _sydneyMarker = [[GMSMarker alloc] init];
  _sydneyMarker.title = @"Sydney";
  _sydneyMarker.snippet = @"Population: 4,605,992";
  _sydneyMarker.position = CLLocationCoordinate2DMake(-33.8683, 151.2086);
  _sydneyMarker.flat = NO;
  _sydneyMarker.rotation = 30.0;
  NSLog(@"sydneyMarker: %@", _sydneyMarker);

  GMSMarker *australiaMarker = [[GMSMarker alloc] init];
  australiaMarker.title = @"Australia";
  australiaMarker.position = CLLocationCoordinate2DMake(-27.994401, 140.07019);
  australiaMarker.appearAnimation = kGMSMarkerAnimationPop;
  australiaMarker.flat = YES;
  australiaMarker.draggable = YES;
  australiaMarker.groundAnchor = CGPointMake(0.5, 0.5);
  australiaMarker.icon = [UIImage imageNamed:@"australia"];
  australiaMarker.map = mapView;

  _fadeInMarker = [[GMSMarker alloc] init];
  _fadeInMarker.title = @"Australia";
  _fadeInMarker.position = CLLocationCoordinate2DMake(-29.9959, 145.0719);
  _fadeInMarker.appearAnimation = kGMSMarkerAnimationFadeIn;
  _fadeInMarker.icon = [UIImage imageNamed:@"australia"];

  // Set the marker in Sydney to be selected
  mapView.selectedMarker = _sydneyMarker;

  self.view = mapView;
  self.navigationItem.rightBarButtonItem =
      [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemAdd
                                                    target:self
                                                    action:@selector(didTapAdd)];
}

- (void)didTapAdd {
  if (_sydneyMarker.map == nil) {
    _sydneyMarker.map = (GMSMapView *)self.view;
  } else {
    _sydneyMarker.map = nil;
  }

  _melbourneMarker.map = nil;
  _melbourneMarker = [[GMSMarker alloc] init];
  _melbourneMarker.title = @"Melbourne";
  _melbourneMarker.snippet = @"Population: 4,169,103";
  _melbourneMarker.position = CLLocationCoordinate2DMake(-37.81969, 144.966085);
  _melbourneMarker.map = (GMSMapView *)self.view;

  if (_fadeInMarker.map) {
    _fadeInMarker.map = nil;
  } else {
    _fadeInMarker.map = (GMSMapView *)self.view;
  }
}

@end
      
```

<br />

## Run the full sample app locally

The Maps SDK for iOS sample app is available as a
[download archive](https://github.com/googlemaps-samples/maps-sdk-for-ios-samples/archive/main.zip)
from [GitHub](https://github.com/googlemaps-samples/maps-sdk-for-ios-samples/tree/main/GoogleMaps).
Follow these steps to install and try the Maps SDK for iOS sample app.

> [!IMPORTANT]
> **Important:** You must remove any existing dependencies added using CocoaPods or manually. See [Step 2 of Set up an Xcode project](https://developers.google.com/maps/documentation/ios-sdk/config.md.txt#swift-package-manager) for instructions.

1. Run `git clone https://github.com/googlemaps-samples/maps-sdk-for-ios-samples.git` to clone the samples repository into a local directory.
2. 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/GoogleMaps-Swift
       open GoogleMapsSwiftXCFrameworkDemos.xcodeproj

   ### Objective-C

       cd maps-sdk-for-ios-samples-main/GoogleMaps
       open GoogleMapsDemos.xcodeproj

3. In the Xcode project, go to **File** \> **Add Package Dependencies** . Enter `https://github.com/googlemaps/ios-maps-sdk` as the URL, press **Enter** to pull in the package, and click **Add Package**.
4. In Xcode, press the compile button to [build the app](https://developer.apple.com/documentation/xcode/building-and-running-an-app) with the current scheme. The build produces an error, prompting you to enter your API key in the `SDKConstants.swift` file for Swift or`SDKDemoAPIKey.h` file for Objective-C.
5. [Get an API key](https://developers.google.com/maps/documentation/ios-sdk/get-api-key.md.txt) from your project with the [Maps SDK for iOS enabled](https://developers.google.com/maps/documentation/ios-sdk/cloud-setup#enabling-apis).
6. Edit the `SDKConstants.swift` file for Swift or`SDKDemoAPIKey.h` file for Objective-C and paste your API key into the definition of either the `apiKey` or `kAPIKey` constant. For example:

   ### Swift

   ```swift
   static let apiKey = "YOUR_API_KEY"
   ```

   ### Objective-C

   ```objective-c
   static NSString *const kAPIKey = @"YOUR_API_KEY";
   ```
7. In the `SDKConstants.swift` file (Swift) or`SDKDemoAPIKey.h` file (Objective-C), remove the following line, because it's used to register the user-defined issue:

   ### Swift

   ```swift
   #error (Register for API Key and insert here. Then delete this line.)
   ```

   ### Objective-C

   ```objective-c
   #error Register for API Key and insert here.
   ```
8. Build and run the project. The iOS simulator window appears, showing a list of **Maps SDK Demos**.
9. Choose one of the options displayed, to experiment with a feature of the Maps SDK for iOS.
10. If prompted to allow GoogleMapsDemos to access your location, choose **Allow**.