Street View

Выберите платформу: Android iOS JavaScript

Google Maps Street View позволяет исследовать места по всему миру с помощью 360-градусных снимков с уровня улицы. Вы можете осмотреть мировые достопримечательности, полюбоваться природными чудесами, проложить маршрут или показать фасад своего бизнеса.

Обзор

Google Street View предоставляет панорамные 360-градусные виды с обозначенных дорог на всей территории покрытия. Зона покрытия, доступная через SDK, аналогична зоне покрытия приложения Google Maps для iOS или https://maps.google.com/ . Подробнее о Street View и список поддерживаемых зон на интерактивной карте можно узнать в разделе «О Street View» .

SDK Google Maps для iOS предоставляет сервис Street View для получения и обработки изображений, используемых в Google Maps Street View. Изображения Street View возвращаются в виде панорам и просматриваются внутри средства просмотра Street View — объекта типа GMSPanoramaView .

Панорамный вид улиц

Каждая панорама Street View представляет собой изображение или набор изображений, обеспечивающих полный 360-градусный обзор из одной точки. Изображения соответствуют эквиректакулярной проекции (Plate Carrée), которая включает 360 градусов горизонтального обзора (полный охват) и 180 градусов вертикального обзора (от вертикального положения вверх до вертикального положения вниз). Полученная 360-градусная панорама представляет собой проекцию на сферу, при этом изображение обтекает двухмерную поверхность этой сферы.

Панорамные изображения Street View можно просматривать с помощью объекта GMSPanoramaView . Этот объект предоставляет средство просмотра, которое отображает панораму в виде сферы с камерой в центре. Вы можете программно управлять ориентацией камеры, а также несколькими свойствами, настраивающими средство просмотра.

Доступ к данным Street View

Панорамные изображения в режиме Street View идентифицируются по одному из двух типов метаданных:

panoramaID
Уникальный идентификатор панорамы Street View. Этот panoramaID может меняться со временем и не подходит в качестве долгосрочной или жестко закодированной ссылки. panoramaID лучше всего использовать для обеспечения программного доступа к различным изображениям Street View.
coordinate
Точное местоположение этого изображения, выраженное в виде CLLocationCoordinate2D . Используйте coordinate для постоянного хранения местоположения панорамы или для преобразования действий пользователя на карте в изображение Street View.

Идентификатор panoramaID и coordinate хранятся как свойства объекта GMSPanorama . Вы можете запросить GMSPanorama у GMSPanoramaService , используя либо coordinate , либо panoramaID . Полученный объект будет содержать оба элемента метаданных, а также массив ссылок на ближайшие панорамы.

Укажите местоположение панорамы

Местоположение панорамы Street View можно задать на основе координат.

  • Метод moveNearCoordinate запрашивает панораму вблизи указанных координат.

  • Метод moveNearCoordinate:radius аналогичен, но позволяет указать радиус поиска в метрах вокруг заданной координаты.

  • Метод moveNearCoordinate:source позволяет указать источник. Источник полезен, если вы хотите ограничить поиск панорам в Street View только теми, которые находятся на открытом воздухе. По умолчанию панорамы мест, расположенных либо внутри, либо снаружи. Обратите внимание, что панорамы на открытом воздухе могут отсутствовать для указанного местоположения.

  • Метод moveNearCoordinate:radius:source позволяет указать как радиус, так и источник.

Просмотр изображений Street View

Добавление средства просмотра улиц.

Основные шаги для добавления средства просмотра следующие:

  1. (Один раз) Следуйте инструкциям в разделе « Начало работы» , чтобы получить SDK, ключ и добавить необходимые фреймворки.
  2. Создайте или обновите ViewController . Если панорама будет отображаться, когда этот контроллер представления станет видимым, обязательно создайте её внутри метода loadView .
  3. Создайте и инициализируйте класс GMSPanoramaView , используя метод GMSPanoramaView initWithFrame: Если он будет использоваться в качестве единственного представления контроллера представления, то в качестве рамки карты можно использовать CGRectZero — размер карты будет изменяться автоматически.
  4. Установите объект GMSPanoramaView в качестве представления контроллера представления. Например, self.view = panoView; .
  5. Укажите местоположение изображения в режиме просмотра улиц, используя такой метод, как moveNearCoordinate: .

В приведенном ниже примере в приложение добавляется средство просмотра улиц.

Быстрый

import GoogleMaps

class StreetView: UIViewController {

  override func loadView() {
    let panoView = GMSPanoramaView(frame: .zero)
    self.view = panoView

    panoView.moveNearCoordinate(CLLocationCoordinate2D(latitude: -33.732, longitude: 150.312))
  }
}
      

Objective-C

#import "StreetView.h"
@import GoogleMaps;

@interface StreetView ()

@end

@implementation StreetView

- (void)loadView {
  GMSPanoramaView *panoView = [[GMSPanoramaView alloc] initWithFrame:CGRectZero];
  self.view = panoView;

  [panoView moveNearCoordinate:CLLocationCoordinate2DMake(-33.732, 150.312)];
}

@end
      

Настройте просмотрщик

Вы можете настроить средство просмотра, ограничив доступные жесты. По умолчанию включены панорамирование, масштабирование и переход к соседним панорамам. Управление отдельными жестами осуществляется через свойства GMSPanoramaView . Эти свойства позволяют включать или отключать управляемые пользователем жесты; программные изменения по-прежнему возможны, даже если жест отключен.

orientationGestures
Должен ли пользователь иметь возможность изменять ориентацию камеры касанием или перетаскиванием. Установите значение NO , чтобы отключить изменение ориентации камеры.
zoomGestures
Будет ли пользователь иметь возможность масштабировать изображение с помощью жеста «щипок». Установите значение NO , чтобы отключить масштабирование.
navigationGestures
Будет ли пользователь иметь возможность менять отображаемую панораму? Пользователи могут использовать однократное касание ссылок навигации или двойное касание изображения для смены панорам. Установите значение NO , чтобы отключить возможность изменения навигации.

С помощью метода setAllGesturesEnabled: можно включить или отключить все жесты одновременно.

Быстрый

panoView.setAllGesturesEnabled(false)
      

Objective-C

[panoView setAllGesturesEnabled:NO];
      

Запуск Street View с использованием схемы URL-адресов

Изображения Google Street View можно просматривать прямо из приложения Google Maps для iOS. Вы можете запустить приложение Google Maps для iOS в режиме просмотра улиц, используя схему URL-адресов comgooglemaps , установив параметр mapmode в streetview . Пример URL-адреса, который запустит режим просмотра улиц, приведен ниже. Для получения дополнительной информации обратитесь к документации по схеме URL-адресов .

comgooglemaps://?center=46.414382,10.013988&mapmode=streetview

Места и точка обзора (POV) в режиме Street View

Функция GMSPanoramaCamera позволяет устанавливать точку обзора камеры Street View, используя комбинацию направления, наклона и масштабирования.

Приведенные ниже фрагменты кода позволят сориентировать камеру на юг и немного вниз.

Быстрый

panoView.camera = GMSPanoramaCamera(heading: 180, pitch: -10, zoom: 1)
      

Objective-C

panoView.camera = [GMSPanoramaCamera cameraWithHeading:180
                                                 pitch:-10
                                                  zoom:1];
      

Ориентация

Местоположение в режиме Street View определяет положение фокуса камеры для изображения, но не определяет ориентацию камеры для этого изображения. Для этой цели объект GMSOrientation определяет два свойства:

  • heading определяет угол поворота вокруг точки наблюдения камеры в градусах относительно истинного севера. Направление измеряется по часовой стрелке: истинный север — 0, восток — 90, юг — 180, запад — 270.
  • pitch (по умолчанию 0 ) определяет отклонение угла «вверх» или «вниз» от исходного угла наклона камеры по умолчанию, который часто (но не всегда) является горизонтальным. (Например, изображение, сделанное на холме, скорее всего, будет иметь угол наклона по умолчанию, который не является горизонтальным.) Углы наклона измеряются положительными значениями при взгляде вверх (до +90 градусов прямо вверх и перпендикулярно углу наклона по умолчанию) и отрицательными значениями при взгляде вниз (до -90 градусов прямо вниз и перпендикулярно углу наклона по умолчанию).

Зум

Функция Street View поддерживает различные уровни детализации изображения с помощью масштабирования. Уровень масштабирования можно установить программно, или же пользователи могут изменять его в окне просмотра, используя жест масштабирования (например, с помощью жеста «щипка»).

Перемещение камеры

После создания объекта GMSPanoramaView и выбора настроенной или стандартной камеры, вы можете изменить её несколькими способами. При изменении камеры у вас есть возможность анимировать соответствующее движение камеры. Анимация интерполирует между текущими и новыми параметрами камеры.

Вы можете изменить объект GMSPanoramaCamera и установить его в свойстве camera объекта GMSPanoramaView . Это позволит привязать камеру к новой точке обзора без анимации. Можно создать объект GMSCameraPosition для настройки любой комбинации ориентации и масштабирования.

Быстрый

panoView.camera = GMSPanoramaCamera(heading: 180, pitch: -10, zoom: 1)
      

Objective-C

panoView.camera = [GMSPanoramaCamera cameraWithHeading:180
                                                 pitch:-10
                                                  zoom:1];
      

Анимировать переход можно, вызвав метод animateToCamera:animationDuration: ` класса ` GMSPanoramaView . Кроме того, управлять камерой можно с помощью Core Animation. Эта функция доступна через пользовательский CALayer класса ` GMSPanoramaView , GMSPanoramaLayer .

Маркеры в режиме просмотра улиц

Объект GMSPanoramaView способен отображать маркеры на карте. Вы можете использовать один и тот же объект GMSMarker как для объекта GMSMapView , так и для объекта GMSPanoramaView , задав соответствующие свойства:

Быстрый

// Create a marker at the Eiffel Tower
let position = CLLocationCoordinate2D(latitude: 48.858, longitude: 2.294)
let marker = GMSMarker(position: position)

// Add the marker to a GMSPanoramaView object named panoView
marker.panoramaView = panoView

// Add the marker to a GMSMapView object named mapView
marker.map = mapView
      

Objective-C

// Create a marker at the Eiffel Tower
CLLocationCoordinate2D position = CLLocationCoordinate2DMake(48.858,2.294);
GMSMarker *marker = [GMSMarker markerWithPosition:position];

// Add the marker to a GMSPanoramaView object named panoView
marker.panoramaView = panoView;

// Add the marker to a GMSMapView object named mapView
marker.map = mapView;
      

Размер маркеров будет изменяться в зависимости от расстояния между их положением и местоположением объекта GMSCameraView . Если это расстояние станет слишком большим, маркер станет слишком маленьким для отображения и будет скрыт.

Чтобы удалить свойство panoramaView из GMSPanoramaView , установите для него значение nil .

Быстрый

marker.panoramaView = nil
      

Objective-C

marker.panoramaView = nil;
      

События

Вы можете отслеживать события, происходящие на панораме Street View, например, когда пользователь нажимает на панораму. Для отслеживания событий необходимо реализовать протокол GMSPanoramaViewDelegate . См. общее руководство по событиям и список методов GMSPanoramaViewDelegate .