
Google Maps Street View позволяет исследовать места по всему миру с помощью 360-градусных снимков с уровня улицы. Вы можете осмотреть мировые достопримечательности, полюбоваться природными чудесами, проложить маршрут или показать фасад своего бизнеса.
Обзор
Google Street View предоставляет панорамные 360-градусные виды с обозначенных дорог на всей территории покрытия. Зона покрытия, доступная через SDK, аналогична зоне покрытия приложения Google Maps для iOS или https://maps.google.com/ . Подробнее о Street View и список поддерживаемых зон на интерактивной карте можно узнать в разделе «О Street View» .
SDK Google Maps для iOS предоставляет сервис Street View для получения и обработки изображений, используемых в Google Maps Street View. Изображения Street View возвращаются в виде панорам и просматриваются внутри средства просмотра Street View — объекта типа GMSPanoramaView .
Панорамный вид улиц
Каждая панорама 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
Добавление средства просмотра улиц.
Основные шаги для добавления средства просмотра следующие:
- (Один раз) Следуйте инструкциям в разделе « Начало работы» , чтобы получить SDK, ключ и добавить необходимые фреймворки.
- Создайте или обновите
ViewController. Если панорама будет отображаться, когда этот контроллер представления станет видимым, обязательно создайте её внутри методаloadView. - Создайте и инициализируйте класс
GMSPanoramaView, используя методGMSPanoramaViewinitWithFrame:Если он будет использоваться в качестве единственного представления контроллера представления, то в качестве рамки карты можно использоватьCGRectZero— размер карты будет изменяться автоматически. - Установите объект
GMSPanoramaViewв качестве представления контроллера представления. Например,self.view = panoView;. - Укажите местоположение изображения в режиме просмотра улиц, используя такой метод, как
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)) } }
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-адреса, который запустит режим просмотра улиц, приведен ниже. Для получения дополнительной информации обратитесь к документации по схеме URL-адресов .
comgooglemaps://?center=46.414382,10.013988&mapmode=streetview
Места и точка обзора (POV) в режиме Street View
Функция 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 .
Маркеры в режиме просмотра улиц
Объект 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 из GMSPanoramaView , установите для него значение nil .
Быстрый
marker.panoramaView = nil
Objective-C
marker.panoramaView = nil;
События
Вы можете отслеживать события, происходящие на панораме Street View, например, когда пользователь нажимает на панораму. Для отслеживания событий необходимо реализовать протокол GMSPanoramaViewDelegate . См. общее руководство по событиям и список методов GMSPanoramaViewDelegate .