Street View

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

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

Обзор

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

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

Панорамы Просмотра улиц

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

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

Доступ к данным просмотра улиц

Панорамы Просмотра улиц идентифицируются одним из двух фрагментов метаданных:

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 позволяет указать как радиус, так и источник.

Просмотр изображений Просмотра улиц

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

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

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

Цель-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)
      

Цель-C

[panoView setAllGesturesEnabled:NO];
      

Запуск просмотра улиц с помощью схемы URL-адресов

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

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

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

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

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

Быстрый

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

Цель-C

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

Ориентация

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

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

Увеличить

Просмотр улиц поддерживает различные уровни детализации изображения за счет масштабирования. Вы можете установить уровень масштабирования программно, или пользователи могут изменить уровень в средстве просмотра, сведя пальцы для увеличения.

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

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

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

Быстрый

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

Цель-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
      

Цель-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
      

Цель-C

marker.panoramaView = nil;
      

События

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