Просмотр улиц

Оптимизируйте свои подборки Сохраняйте и классифицируйте контент в соответствии со своими настройками.
Выберите платформу: Android iOS JavaScript

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

Обзор

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

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

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

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

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

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

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

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

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

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

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

  • Метод moveNearCoordinate запрашивает панораму рядом с координатой.

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

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

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

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

Добавление зрителя Просмотра улиц

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

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

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

Места просмотра улиц и точка обзора (POV)

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

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

Быстрый

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 panoramaView

Быстрый

marker.panoramaView = nil
      

Цель-C

marker.panoramaView = nil;
      

События

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