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