Добавление карты с маркером
В этом руководстве рассказывается, как добавить карту 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.
- Удалите все существующие зависимости Maps SDK для iOS.
- Откройте окно терминала и перейдите в каталог
tutorials/map-with-marker. - Закройте рабочую область Xcode и выполните следующие команды:
sudo gem install cocoapods-deintegrate cocoapods-clean pod deintegrate pod cache clean --all rm Podfile rm map-with-marker.xcworkspace
- Откройте проект Xcode и удалите файл podfile.
- Выберите File (Файл) > Add Package Dependencies (Добавить зависимости пакетов).
- Введите URL https://github.com/googlemaps/ios-maps-sdk, нажмите Ввод, чтобы получить пакет, и выберите Add Package (Добавить пакет).
- Возможно, вам потребуется сбросить кеш пакетов. Для этого выберите File (Файл) > Packages (Пакеты) > Reset Package Cache (Сбросить кеш пакетов).
Как получить ключ API и активировать нужные API
Для выполнения этого руководства вам понадобится ключ API Google, который авторизован для Maps SDK для iOS. Нажмите кнопку ниже, чтобы получить ключ и активировать API.
НачатьПодробнее о том, как получить ключ API…
Добавление ключа API Google Карт в приложение
Чтобы добавить ключ API в AppDelegate.swift, выполните указанные ниже действия:
- Обратите внимание, что в файл добавлена следующая строка:
import GoogleMaps
- Измените следующую строку в методе
application(_:didFinishLaunchingWithOptions:), заменив YOUR_API_KEY на свой ключ API:GMSServices.provideAPIKey("YOUR_API_KEY")
Как создать сборку и запустить приложение
- Подключите iOS-устройство к компьютеру или выберите симулятор в меню схемы Xcode.
- Если вы используете мобильное устройство, убедитесь, что на нем включены сервисы геолокации. Если вы используете симулятор, выберите местоположение в меню Features (Функции).
- В Xcode выберите пункт меню Product/Run (Продукт/Запустить) или нажмите на значок воспроизведения.
- Xcode выполнит сборку приложения, а затем запустит его на устройстве или в симуляторе.
- Вы должны увидеть карту с маркером, указывающим на город Сидней на восточном берегу Австралии, как показано на этой странице.
Устранение неполадок
- Если карта не отображается, убедитесь, что вы получили ключ API и добавили его в приложение, как описано выше. Проверьте консоль отладки Xcode на наличие сообщений об ошибках, касающихся ключа API.
- Если для ключа API настроены ограничения по идентификатору пакета iOS, добавьте этот идентификатор в новое приложение:
com.google.examples.map-with-marker. - Убедитесь, что подключение Wi-Fi или GPS работает хорошо.
- Для просмотра журналов и отладки приложения используйте инструменты отладки Xcode.
Как работает код
- Создайте карту и задайте ее в качестве представления в
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;
- Добавьте маркер на карту в
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.
Дальнейшие действия
Прочитайте статьи об объекте карты и о том, что можно делать с маркерами.