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

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

Начать

Прежде чем вы сможете опробовать пример кода, вам необходимо настроить среду разработки. Дополнительную информацию см. в примерах кода 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 из своего проекта с включенным Maps SDK для iOS .
  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 доступ к вашему местоположению, выберите «Разрешить» .
,
В этом примере отображается карта с булавками для маркеров Сиднея и Мельбурна, Австралия.

Начать

Прежде чем вы сможете опробовать пример кода, вам необходимо настроить среду разработки. Дополнительную информацию см. в примерах кода 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 из своего проекта с включенным Maps SDK для iOS .
  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 доступ к вашему местоположению, выберите «Разрешить» .