Схема URL-адресов Google Maps для iOS

На устройствах под управлением iOS 9 и более поздних версий вы можете использовать универсальные ссылки для запуска Google Maps при наличии URL-адреса Google Maps.

Вы можете использовать URL-схему Google Карт для запуска приложения Google Карт для iOS , а также выполнять поиск, получать запросы маршрутов и отображать виды карты. При запуске Google Карт ваш идентификатор пакета автоматически отправляется вместе с запросом.

Для использования схемы URL-адресов Google Maps ключ API Google не нужен.

Google Maps для iOS поддерживает универсальные ссылки на устройствах под управлением iOS 9 и более поздних версий.

Если ваш URL-адрес соответствует следующему регулярному выражению и устройство работает под управлением iOS 9 или более поздней версии, вы можете рассмотреть возможность использования метода openURL: напрямую.

(http(s?)://)?
((maps\.google\.{TLD}/)|
 ((www\.)?google\.{TLD}/maps/)|
 (goo.gl/maps/))
.*

Например,

Быстрый

UIApplication.shared.openURL(URL(string:"https://www.google.com/maps/@42.585444,13.007813,6z")!)

Objective-C

[[UIApplication sharedApplication] openURL:
   [NSURL URLWithString:@"https://www.google.com/maps/@42.585444,13.007813,6z"]];

Обзор

Схема URL позволяет запускать нативное приложение iOS из другого приложения iOS или веб-приложения. Вы можете задать параметры URL, которые будут переданы запущенному приложению. Приложение Google Карты для iOS поддерживает следующие схемы URL:

  • comgooglemaps:// и comgooglemaps-x-callback:// — эти схемы позволяют запустить приложение Google Maps для iOS и выполнить одно из нескольких действий:

    • Отобразить карту в указанном месте и с указанным уровнем масштабирования.
    • Найдите нужные места или локации и отобразите их на карте.
    • Запросите маршрут из одного места в другое. Маршруты можно получить для четырёх видов транспорта: автомобиль, пешком, на велосипеде и общественный транспорт.
    • Добавьте навигацию в ваше приложение.
    • В iOS 8 можно выполнить обратный вызов после завершения работы приложения, используя comgooglemaps-x-callback:// . Обратные вызовы часто используются для возврата пользователя в приложение, которое изначально открыло Google Карты для iOS. Обратите внимание, что в iOS 9 система автоматически добавляет ссылку «Назад» в левом углу строки состояния.
  • comgooglemapsurl:// — эта схема позволяет запускать приложение Google Карт для iOS, используя URL-адрес, полученный с сайта Google Карт для ПК. Это означает, что вы можете предоставить своим пользователям привычный мобильный интерфейс, а не просто загружать сайт Google Карт.

    • Исходный URL может быть maps.google.com , google.com/maps , или использовать любой допустимый домен верхнего уровня страны вместо com . Вы также можете использовать URL-адреса перенаправления goo.gl/maps .
    • Вы можете выполнить обратный вызов, используя параметры x-source и x-success с URL-схемой comgooglemapsurl:// .

Запуск приложения Google Maps для iOS и выполнение определенной функции

Чтобы запустить приложение Google Maps для iOS и при необходимости выполнить одну из поддерживаемых функций, используйте схему URL следующего вида:

comgooglemaps://?parameters

или:

comgooglemaps-x-callback://?parameters

Параметры подробно описаны далее в этом документе.

Проверка наличия приложения Google Maps на устройстве

Прежде чем отображать один из этих URL-адресов пользователю в вашем приложении, убедитесь, что приложение установлено. Приложение может проверить доступность URL-схемы с помощью следующего кода:

Быстрый

UIApplication.shared.canOpenURL(URL(string:"comgooglemaps://")!)

Objective-C

[[UIApplication sharedApplication] canOpenURL:
    [NSURL URLWithString:@"comgooglemaps://"]];

Например, чтобы отобразить карту Центрального парка в Нью-Йорке, вы можете использовать следующий код:

Быстрый

if (UIApplication.shared.canOpenURL(URL(string:"comgooglemaps://")!)) {
  UIApplication.shared.openURL(URL(string:
    "comgooglemaps://?center=40.765819,-73.975866&zoom=14&views=traffic")!)
} else {
  print("Can't use comgooglemaps://");
}

Objective-C

if ([[UIApplication sharedApplication] canOpenURL:
     [NSURL URLWithString:@"comgooglemaps://"]]) {
  [[UIApplication sharedApplication] openURL:
   [NSURL URLWithString:@"comgooglemaps://?center=40.765819,-73.975866&zoom=14&views=traffic"]];
} else {
  NSLog(@"Can't use comgooglemaps://");
}

Отображение карты

Используйте URL-схему для отображения карты с заданным уровнем масштабирования и местоположением. Вы также можете накладывать другие виды поверх карты или отображать изображения Street View.

Параметры

Все следующие параметры необязательны. Если параметры не заданы, схема URL запустит приложение Google Карты для iOS.

  • center : Это центральная точка области просмотра карты. Форматируется как строка координат latitude,longitude разделенная запятыми.
  • mapmode : устанавливает тип отображаемой карты. Возможные значения: standard или streetview . Если не указано иное, будут использоваться текущие настройки приложения.
  • views : включает/выключает определённые виды. Возможные значения: satellite , traffic или transit . Можно указать несколько значений, разделяя их запятыми. Если параметр не указан, все виды будут удалены.
  • zoom : определяет уровень масштабирования карты.

В этом примере URL-адреса отображается карта с центром в Нью-Йорке при масштабе 14 и отображении дорожной ситуации на:

comgooglemaps://?center=40.765819,-73.975866&zoom=14&views=traffic

Карта дорожного движения Нью-Йорка

Вот еще несколько примеров:

comgooglemaps://?center=37.788463,-122.392545&zoom=12
comgooglemaps://?center=46.414382,10.013988&mapmode=streetview

Используйте эту схему для отображения поисковых запросов в указанном месте области просмотра.

Параметры

Помимо параметров, используемых для отображения карты, Поиск поддерживает параметр q .

  • q : Строка запроса для вашего поиска.

Этот пример URL-адреса для поиска «Пиццы» в указанном месте:

comgooglemaps://?q=Pizza&center=37.759748,-122.427135

Пицца рядом

Вот еще несколько примеров:

comgooglemaps://?q=Steamers+Lane+Santa+Cruz,+CA&center=37.782652,-122.410126&views=satellite,traffic&zoom=15
comgooglemaps://?q=Google+Japan,+Minato,+Tokyo,+Japan&center=35.660888,139.73073&zoom=15&views=transit

Отображение направлений

Используйте эту схему для запроса и отображения маршрутов между двумя точками. Вы также можете указать вид транспорта.

Параметры

  • saddr : Задаёт начальную точку для поиска маршрутов. Это может быть широта, долгота или адрес в формате запроса. Если строка запроса возвращает более одного результата, будет выбран первый результат. Если значение оставить пустым, будет использовано текущее местоположение пользователя.
  • daddr : Задаёт конечную точку для поиска маршрутов. Имеет тот же формат и поведение, что и saddr .
  • directionsmode : Способ передвижения. Можно выбрать: driving , transit , bicycling или walking .

В примере URL-адреса отображаются маршруты общественного транспорта между Google NYC и аэропортом имени Джона Кеннеди:

comgooglemaps://?saddr=Google+Inc,+8th+Avenue,+New+York,+NY&daddr=John+F.+Kennedy+International+Airport,+Van+Wyck+Expressway,+Jamaica,+New+York&directionsmode=transit

Направления общественного транспорта

Вот еще несколько примеров:

comgooglemaps://?saddr=Google,+1600+Amphitheatre+Parkway,+Mountain+View,+CA+94043&daddr=Google+Inc,+345+Spear+Street,+San+Francisco,+CA&center=37.422185,-122.083898&zoom=10
comgooglemaps://?saddr=2025+Garcia+Ave,+Mountain+View,+CA,+USA&daddr=Google,+1600+Amphitheatre+Parkway,+Mountain+View,+CA,+United+States&center=37.423725,-122.0877&directionsmode=walking&zoom=17

Указание URL обратного вызова

Если вы хотите указать URL-адрес обратного вызова, необходимо использовать URL-схему comgooglemaps-x-callback:// . Эта схема соответствует спецификации x-callback-url . При вызове приложения Google Maps для iOS с этой схемой в верхней части экрана появится кнопка. Нажатие на эту кнопку инициирует обратный вызов по указанному вами URL-адресу.

Запросы к comgooglemaps-x-callback:// должны иметь вид:

comgooglemaps-x-callback://?parameters

Параметры

Схема URL x-callback принимает те же параметры, что и схема URL comgooglemaps:// , а также следующие дополнительные параметры. Оба параметра являются обязательными.

  • x-source — имя приложения, отправляющего запрос x-callback. Предпочтительны короткие имена.
  • x-success — URL-адрес, который нужно вызвать после завершения. Часто это схема URL-адресов для вашего приложения, позволяющая пользователям вернуться в исходное приложение.

Обратите внимание, что вашему приложению придется зарегистрировать собственную схему URL, чтобы оно могло реагировать на URL обратного вызова.

  1. Убедитесь, что ваше приложение зарегистрировало схему URL, которая может ответить на запрос обратного вызова.
  2. Передайте метку для кнопки обратного вызова в параметре x-source .
  3. Передайте URL-адрес обратного вызова в параметре x-success .

В следующем примере приложение Google Карты для iOS запустится и отобразит карту с центром в Нью-Йорке. В приложении также появится кнопка «SourceApp». При нажатии на кнопку «SourceApp» приложение Google Карты для iOS выполнит обратный вызов фиктивной URL-схемы sourceapp://?resume=true .

comgooglemaps-x-callback://?center=40.765819,-73.975866&zoom=14
   &x-success=sourceapp://?resume=true
   &x-source=SourceApp

Как и в случае со схемой URL comgooglemaps:// , сначала необходимо убедиться, что приложение Google Карт для iOS доступно на устройстве и поддерживает схему URL x-callback. Ваше приложение может проверить доступность схемы URL с помощью следующего кода:

Быстрый

UIApplication.shared.canOpenURL(URL(string:"comgooglemaps-x-callback://")!)

Objective-C

[[UIApplication sharedApplication] canOpenURL:
   [NSURL URLWithString:@"comgooglemaps-x-callback://"]];

Это пример URL-адреса, который позволяет пользователям вернуться в приложение после поиска десерта.

comgooglemaps-x-callback://?q=dessert&center=37.759748,-122.427135
   &x-success=sourceapp://?resume=true
   &x-source=Nom+Nom

Добавление навигации в ваше приложение

Запуск приложения Google Карт для iOS с запросом маршрута — простой способ предоставить пользователям доступ к пошаговой навигации из вашего приложения. Вы можете использовать URL-схемы comgooglemaps:// или comgooglemaps-x-callback:// .

Этот фрагмент кода показывает, как использовать схему comgooglemaps-x-callback:// для запроса маршрутов и последующего возврата в приложение, когда пользователь будет готов. Код выполнит следующие действия:

  1. Убедитесь, что схема URL comgooglemaps-x-callback:// доступна.
  2. Запустите приложение Google Карты для iOS и запросите маршрут до аэропорта имени Джона Кеннеди в Нью-Йорке. Оставьте поле начального адреса пустым, чтобы запросить маршрут из текущего местоположения пользователя.
  3. Добавьте кнопку с надписью «AirApp» в приложение Google Карты для iOS. Название кнопки определяется параметром x-source .
  4. Вызвать фиктивную схему URL sourceapp:// , когда пользователь нажимает кнопку «Назад».

Быстрый

let testURL = URL(string: "comgooglemaps-x-callback://")!
if UIApplication.shared.canOpenURL(testURL) {
  let directionsRequest = "comgooglemaps-x-callback://" +
    "?daddr=John+F.+Kennedy+International+Airport,+Van+Wyck+Expressway,+Jamaica,+New+York" +
    "&x-success=sourceapp://?resume=true&x-source=AirApp"

  let directionsURL = URL(string: directionsRequest)!
  UIApplication.shared.openURL(directionsURL)
} else {
  NSLog("Can't use comgooglemaps-x-callback:// on this device.")
}

Objective-C

NSURL *testURL = [NSURL URLWithString:@"comgooglemaps-x-callback://"];
if ([[UIApplication sharedApplication] canOpenURL:testURL]) {
  NSString *directionsRequest = @"comgooglemaps-x-callback://" +
      @"?daddr=John+F.+Kennedy+International+Airport,+Van+Wyck+Expressway,+Jamaica,+New+York" +
      @"&x-success=sourceapp://?resume=true&x-source=AirApp";
  NSURL *directionsURL = [NSURL URLWithString:directionsRequest];
  [[UIApplication sharedApplication] openURL:directionsURL];
} else {
  NSLog(@"Can't use comgooglemaps-x-callback:// on this device.");
}

Запуск приложения Google Maps для iOS с URL-адреса Google Maps для ПК

Если ваше приложение имеет доступ к уже существующему URL-адресу Google Maps, например, на веб-странице или в базе данных, вы можете использовать эту схему для открытия URL-адреса в приложении Google Maps для iOS, тем самым предлагая вашим пользователям наилучший нативный опыт.

  1. Замените схему http:// или https:// на comgooglemapsurl:// .
  2. Если вы хотите использовать обратный вызов, включите параметры x-source и x-success . Эта схема соответствует спецификации x-callback-url .

Поддерживаемые форматы URL-адресов Google Maps

Схема comgooglemapsurl:// поддерживает URL-адреса, соответствующие этому регулярному выражению, где {TLD} обозначает любой допустимый домен верхнего уровня страны. Разрывы строк добавлены для ясности:

(http(s?)://)?
((maps\.google\.{TLD}/)|
 ((www\.)?google\.{TLD}/maps/)|
 (goo.gl/maps/))
.*

Проверка доступности приложения Google Maps

Сначала убедитесь, что приложение Google Maps для iOS доступно на устройстве и поддерживает схему URL:

Быстрый

UIApplication.shared.canOpenURL(URL(string:"comgooglemaps-x-callback://")!)

Objective-C

[[UIApplication sharedApplication] canOpenURL:
   [NSURL URLWithString:@"comgooglemapsurl://"]];

Примеры

Пример универсального URL-адреса Google Maps:

Исходный URL-адрес Google Карт:

https://www.google.com/maps/preview/@42.585444,13.007813,6z

Используя схему URL:

comgooglemapsurl://www.google.com/maps/preview/@42.585444,13.007813,6z

Пример универсального URL-адреса Google Maps:

Исходный URL-адрес Google Карт:

https://maps.google.com/?q=@37.3161,-122.1836

Используя схему URL:

comgooglemapsurl://maps.google.com/?q=@37.3161,-122.1836

Пример запроса маршрута к Токийской башне с помощью x-callback:

Исходный URL-адрес Google Карт:

http://maps.google.com/maps?f=d&daddr=Tokyo+Tower,+Tokyo,+Japan&sll=35.6586,139.7454&sspn=0.2,0.1&nav=1

В следующем примере приложение Google Карты для iOS запустится и отобразит карту с маршрутом к Токийской башне, как указано в исходном URL-адресе Google Карт (см. выше). В приложении также появится кнопка «SourceApp». При нажатии на кнопку «SourceApp» приложение Google Карты для iOS выполнит обратный вызов фиктивной URL-схемы sourceapp://?resume=true .

comgooglemapsurl://maps.google.com/maps?f=d&daddr=Tokyo+Tower,+Tokyo,+Japan&sll=35.6586,139.7454&sspn=0.2,0.1&nav=1
    &x-source=SourceApp
    &x-success=sourceapp://?resume=true