Добавление карты с маркером

В этом руководстве рассказывается, как добавить карту Google с маркером в приложение для iOS. Оно предназначено для тех, кто имеет начальные или средние знания Swift или Objective-C и общие знания Xcode. Специалисты высокого уровня могут ознакомиться с инструкциями в руководстве для разработчиков.

В этом руководстве вы создадите следующую карту. Маркер установлен в Сиднее (Австралия).

Скриншот карты с маркером над Сиднеем

Как получить код

Клонируйте или скачайте репозиторий с примерами Google Maps для iOS с сайта GitHub.

Вы также можете скачать исходный код, нажав кнопку ниже.

Покажи код

Swift

import UIKit
import GoogleMaps

class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view.
        // Create a GMSCameraPosition that tells the map to display the
        // coordinate -33.86,151.20 at zoom level 6.
        let camera = GMSCameraPosition.camera(withLatitude: -33.86, longitude: 151.20, zoom: 6.0)
        let options = GMSMapViewOptions()
        options.camera = camera
        options.frame = self.view.frame
        let mapView = GMSMapView(options: options)
        self.view.addSubview(mapView)

        // Creates a marker in the center of the map.
        let marker = GMSMarker()
        marker.position = CLLocationCoordinate2D(latitude: -33.86, longitude: 151.20)
        marker.title = "Sydney"
        marker.snippet = "Australia"
        marker.map = mapView
  }
}
      

Objective-C

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

@interface ViewController ()

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
  // Do any additional setup after loading the view.
  // Create a GMSCameraPosition that tells the map to display the
  // coordinate -33.86,151.20 at zoom level 6.
  GMSCameraPosition *camera = [GMSCameraPosition cameraWithLatitude:-33.86
                                                          longitude:151.20
                                                               zoom:6];
  GMSMapViewOptions *options = [[GMSMapViewOptions alloc] init];
  options.camera = camera;
  options.frame = self.view.frame;
  GMSMapView *mapView = [[GMSMapView alloc] initWithOptions:options];
  mapView.myLocationEnabled = YES;
  [self.view addSubview:mapView];

  // Creates a marker in the center of the map.
  GMSMarker *marker = [[GMSMarker alloc] init];
  marker.position = CLLocationCoordinate2DMake(-33.86, 151.20);
  marker.title = @"Sydney";
  marker.snippet = @"Australia";
  marker.map = mapView;
}

@end
      

Начать

Swift Package Manager

Maps SDK для iOS можно установить с помощью Swift Package Manager.

  1. Удалите все существующие зависимости Maps SDK для iOS.
  2. Откройте окно терминала и перейдите в каталог tutorials/map-with-marker.
  3. Закройте рабочую область Xcode и выполните следующие команды:
    sudo gem install cocoapods-deintegrate cocoapods-clean
    pod deintegrate
    pod cache clean --all
    rm Podfile
    rm map-with-marker.xcworkspace
  4. Откройте проект Xcode и удалите файл podfile.
  5. Выберите File (Файл) > Add Package Dependencies (Добавить зависимости пакетов).
  6. Введите URL https://github.com/googlemaps/ios-maps-sdk, нажмите Ввод, чтобы получить пакет, и выберите Add Package (Добавить пакет).
  7. Возможно, вам потребуется сбросить кеш пакетов. Для этого выберите File (Файл) > Packages (Пакеты) > Reset Package Cache (Сбросить кеш пакетов).

Как получить ключ API и активировать нужные API

Для выполнения этого руководства вам понадобится ключ API Google, который авторизован для Maps SDK для iOS. Нажмите кнопку ниже, чтобы получить ключ и активировать API.

Начать

Подробнее о том, как получить ключ API…

Добавление ключа API Google Карт в приложение

Чтобы добавить ключ API в AppDelegate.swift, выполните указанные ниже действия:

  1. Обратите внимание, что в файл добавлена следующая строка:
    import GoogleMaps
  2. Измените следующую строку в методе application(_:didFinishLaunchingWithOptions:), заменив YOUR_API_KEY на свой ключ API:
    GMSServices.provideAPIKey("YOUR_API_KEY")

Как создать сборку и запустить приложение

  1. Подключите iOS-устройство к компьютеру или выберите симулятор в меню схемы Xcode.
  2. Если вы используете мобильное устройство, убедитесь, что на нем включены сервисы геолокации. Если вы используете симулятор, выберите местоположение в меню Features (Функции).
  3. В Xcode выберите пункт меню Product/Run (Продукт/Запустить) или нажмите на значок воспроизведения.
    • Xcode выполнит сборку приложения, а затем запустит его на устройстве или в симуляторе.
    • Вы должны увидеть карту с маркером, указывающим на город Сидней на восточном берегу Австралии, как показано на этой странице.

Устранение неполадок

  • Если карта не отображается, убедитесь, что вы получили ключ API и добавили его в приложение, как описано выше. Проверьте консоль отладки Xcode на наличие сообщений об ошибках, касающихся ключа API.
  • Если для ключа API настроены ограничения по идентификатору пакета iOS, добавьте этот идентификатор в новое приложение: com.google.examples.map-with-marker.
  • Убедитесь, что подключение Wi-Fi или GPS работает хорошо.
  • Для просмотра журналов и отладки приложения используйте инструменты отладки Xcode.

Как работает код

  1. Создайте карту и задайте ее в качестве представления в viewDidLoad().

    Swift

    // Create a GMSCameraPosition that tells the map to display the
    // coordinate -33.86,151.20 at zoom level 6.
    let camera = GMSCameraPosition.camera(withLatitude: -33.86, longitude: 151.20, zoom: 6.0)
    let options = GMSMapViewOptions()
    options.camera = camera
    let mapView = GMSMapView(options: options)
    view = mapView
          

    Objective-C

    // Create a GMSCameraPosition that tells the map to display the
    // coordinate -33.86,151.20 at zoom level 6.
    GMSCameraPosition *camera = [GMSCameraPosition cameraWithLatitude:-33.86
                                                            longitude:151.20
                                                                 zoom:6.0];
    GMSMapViewOptions *options = [[GMSMapViewOptions alloc] init];
    options.camera = camera;
    GMSMapView *mapView = [[GMSMapView alloc] initWithOptions:options];
    self.view = mapView;
          
  2. Добавьте маркер на карту в viewDidLoad().

    Swift

    // Creates a marker in the center of the map.
    let marker = GMSMarker()
    marker.position = CLLocationCoordinate2D(latitude: -33.86, longitude: 151.20)
    marker.title = "Sydney"
    marker.snippet = "Australia"
    marker.map = mapView
          

    Objective-C

    // Creates a marker in the center of the map.
    GMSMarker *marker = [[GMSMarker alloc] init];
    marker.position = CLLocationCoordinate2DMake(-33.86, 151.20);
    marker.title = @"Sydney";
    marker.snippet = @"Australia";
    marker.map = mapView;
          

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

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

Дальнейшие действия

Прочитайте статьи об объекте карты и о том, что можно делать с маркерами.