Добавить карту с маркером

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

Используя это руководство, вы создадите следующую карту. Маркер расположен в Сиднее, Австралия.

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

Получить код

Клонируйте или загрузите репозиторий примеров Google Maps iOS на GitHub.

Или нажмите следующую кнопку, чтобы загрузить исходный код:

Дай мне код

Быстрый

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 mapView = GMSMapView.map(withFrame: self.view.frame, camera: camera)
        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];
  GMSMapView *mapView = [GMSMapView mapWithFrame:self.view.frame camera:camera];
  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

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. Перейдите в Файл > Добавить зависимости пакета .
  6. Введите https://github.com/googlemaps/ios-maps-sdk в качестве URL-адреса, нажмите Enter , чтобы загрузить пакет, и нажмите Добавить пакет .
  7. Возможно, вам придется сбросить кэш пакетов, используя Файл > Пакеты > Сбросить кэш пакетов .

Используйте CocoaPods

  1. Загрузите и установите Xcode версии 16.0 или более поздней.
  2. Если у вас еще нет CocoaPods , установите его на macOS, выполнив следующую команду из терминала:
    sudo gem install cocoapods
  3. Перейдите в каталог tutorials/map-with-marker .
  4. Выполните команду pod install . Это установит Maps SDK, указанный в Podfile , вместе со всеми зависимостями.
  5. Запустите pod outdated чтобы сравнить установленную версию pod с любыми новыми обновлениями. Если обнаружена новая версия, выполните pod update , чтобы обновить Podfile и установить последнюю версию SDK. Подробнее см. в руководстве по CocoaPods .
  6. Откройте (дважды щёлкните) файл проекта map-with-marker.xcworkspace , чтобы открыть его в Xcode. Для открытия проекта необходимо использовать файл .xcworkspace .

Получите ключ API и включите необходимые API

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

Начать

Более подробную информацию см. в разделе Получить ключ API .

Добавьте ключ API к вашему приложению

Добавьте свой ключ API в AppDelegate.swift следующим образом:

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

Создайте и запустите свое приложение

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

Поиск неисправностей:

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

Понять код

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

    Быстрый

    // 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 mapView = GMSMapView.map(withFrame: CGRect.zero, camera: camera)
    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];
    GMSMapView *mapView = [[GMSMapView alloc] initWithFrame: CGRectZero camera:camera];
    self.view = mapView;
          
  2. Добавьте маркер на карту в viewDidLoad() .

    Быстрый

    // 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 .

Следующие шаги

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