Street View

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

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

Обзор

Google Street View обеспечивает панорамные 360-градусные виды с обозначенных дорог по всей зоне покрытия. Покрытие, доступное через SDK, такое же, как и для приложения Google Maps для iOS или https://maps.google.com/ . Вы можете узнать больше о Street View и увидеть поддерживаемые области на интерактивной карте на странице About 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 позволяет указать источник. Источник полезен, если вы хотите ограничить Street View только поиском панорам, которые находятся снаружи. По умолчанию панорамы местоположений находятся либо внутри, либо снаружи. Обратите внимание, что для указанного местоположения наружные панорамы могут отсутствовать.

  • Метод 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 на GMSPanoramaView , GMSPanoramaLayer .

Маркеры в 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 .