Street View

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

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

Обзор

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

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

Панорамы Street View

Каждая панорама 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 позволяет указать источник. Источник полезен, если вы хотите ограничить просмотр улиц только панорамами, расположенными снаружи. По умолчанию панорамы мест могут быть либо внутри, либо снаружи. Обратите внимание, что для указанного места может не быть панорам, расположенных снаружи.

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

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

Добавление средства просмотра Street View

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

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

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

Быстрый

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-адреса для запуска Street View представлен ниже. Подробнее см. в документации по URL-схеме .

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

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

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 объекта GMSPanoramaViewGMSPanoramaLayer .

Маркеры в Street View

Объект 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 в nil чтобы удалить его из GMSPanoramaView .

Быстрый

marker.panoramaView = nil
      

Objective-C

marker.panoramaView = nil;
      

События

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