Google Maps Street View позволяет вам исследовать места по всему миру с помощью 360-градусных изображений на уровне улиц. Вы можете исследовать мировые достопримечательности, рассматривать природные чудеса, планировать поездку или показывать внешний вид вашего бизнеса.
Обзор
Google Street View обеспечивает панорамные 360-градусные виды с обозначенных дорог по всей зоне покрытия. Покрытие, доступное через SDK, такое же, как и для приложения Google Maps для iOS или https://maps.google.com/
. Вы можете узнать больше о Street View и увидеть поддерживаемые области на интерактивной карте на странице About 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
позволяет указать источник. Источник полезен, если вы хотите ограничить Street View только поиском панорам, которые находятся снаружи. По умолчанию панорамы местоположений находятся либо внутри, либо снаружи. Обратите внимание, что для указанного местоположения наружные панорамы могут отсутствовать.Метод
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
.