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