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

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

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

Скриншот, показывающий карту с маркером над Сиднеем.

Получить код

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

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

Дай мне код

Быстрый

/*
 * Copyright 2020 Google Inc. All rights reserved.
 *
 *
 * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this
 * file except in compliance with the License. You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software distributed under
 * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF
 * ANY KIND, either express or implied. See the License for the specific language governing
 * permissions and limitations under the License.
 */

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

      

Цель-C

/*
* Copyright 2020 Google Inc. All rights reserved.
*
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this
* file except in compliance with the License. You may obtain a copy of the License at
*
*     http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software distributed under
* the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF
* ANY KIND, either express or implied. See the License for the specific language governing
* permissions and limitations under the License.
*/

#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/mapwithmarker .
  3. Убедитесь, что ваше рабочее пространство Xcode закрыто, и выполните следующие команды:
    sudo gem install cocoapods-deintegrate cocoapods-clean
    pod deintegrate
    pod cache clean --all
    rm Podfile
    rm map-with-marker.xcworkspace
  4. Откройте проект Xcode и удалите подфайл.
  5. Перейдите в «Файл» > «Добавить зависимости пакета» .
  6. Введите https://github.com/googlemaps/ios-maps-sdk в качестве URL-адреса, нажмите Enter , чтобы получить пакет, и нажмите « Добавить пакет» .
  7. Возможно, вам придется сбросить кеш пакетов, выбрав «Файл» > «Пакеты» > «Сбросить кеш пакетов» .

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

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

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

Для работы с этим руководством вам понадобится ключ Google API, авторизованный для использования 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 щелкните пункт меню «Продукт/Выполнить» (или значок кнопки воспроизведения).
    • 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
          

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

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

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

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