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