Как добавить маркер на карту

В этом примере отображается карта с булавками для маркеров Сиднея и Мельбурна, Австралия.

Начать

Прежде чем вы сможете опробовать пример кода, вам необходимо настроить среду разработки. Дополнительную информацию см. в примерах кода Maps SDK для iOS .

Посмотреть код

Быстрый

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
  }
}
      

Цель-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
      

Запустите полный пример приложения локально

Пример приложения Maps SDK для iOS доступен в виде архива для загрузки на GitHub . Выполните следующие действия, чтобы установить и опробовать пример приложения Maps SDK для iOS.

  1. Запустите git clone https://github.com/googlemaps-samples/maps-sdk-for-ios-samples.git , чтобы клонировать репозиторий образцов в локальный каталог.
  2. Откройте окно терминала, перейдите в каталог, в который вы клонировали файлы примеров, и перейдите к каталогу GoogleMaps:

    Быстрый

    cd maps-sdk-for-ios-samples-main/GoogleMaps-Swift
    pod install
    open GoogleMapsSwiftDemos.xcworkspace

    Цель-C

    cd maps-sdk-for-ios-samples-main/GoogleMaps
    pod install
    open GoogleMapsDemos.xcworkspace
  3. В Xcode нажмите кнопку компиляции, чтобы создать приложение с текущей схемой. При сборке возникает ошибка, предлагающая ввести ключ API в файл SDKConstants.swift для Swift или файл SDKDemoAPIKey.h для Objective-C.
  4. Если у вас еще нет ключа API, следуйте инструкциям , чтобы настроить проект в Google Cloud Console и получить ключ API. При настройке ключа в Cloud Console вы можете ограничить ключ идентификатором пакета примера приложения, чтобы гарантировать, что только ваше приложение может использовать ключ. Идентификатор пакета по умолчанию для примера приложения SDK — com.example.GoogleMapsDemos .
  5. Отредактируйте файл SDKConstants.swift для Swift или файл SDKDemoAPIKey.h для Objective-C и вставьте свой ключ API в определение константы apiKey или kAPIKey . Например:

    Быстрый

    static let apiKey = "YOUR_API_KEY"

    Цель-C

    static NSString *const kAPIKey = @"YOUR_API_KEY";
  6. В файле SDKConstants.swift (Swift) или файле SDKDemoAPIKey.h (Objective-C) удалите следующую строку, поскольку она используется для регистрации определяемой пользователем проблемы:

    Быстрый

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

    Цель-C

    #error Register for API Key and insert here.
  7. Создайте и запустите проект. Появится окно симулятора iOS со списком демонстраций Maps SDK .
  8. Выберите один из отображаемых вариантов, чтобы поэкспериментировать с функцией Maps SDK для iOS.
  9. Если будет предложено разрешить GoogleMapsDemos доступ к вашему местоположению, выберите «Разрешить» .