
Просмотр улиц в Google Картах позволяет исследовать мир с помощью панорамных снимков. Вы можете исследовать достопримечательности, любоваться чудесами природы, прокладывать маршруты или показывать, как выглядит ваша компания снаружи.
Обзор
Google Просмотр улиц – это сервис, предоставляющий доступ к круговым панорамам множества разных мест по всему миру. В SDK поддерживается та же область покрытия, что и в приложении Google Карты для iOS или https://maps.google.com/. Подробнее о функции "Просмотр улиц" и о поддерживаемых областях на интерактивной карте…
Maps SDK для iOS предоставляет сервис «Просмотр улиц» для получения изображений, используемых в Google Картах, и управления ими. Изображения Просмотра улиц возвращаются в виде панорам и отображаются в средстве просмотра – объекте типа GMSPanoramaView.
Панорамы в Просмотре улиц
Каждая панорама в Просмотре улиц представляет собой изображение или набор изображений, которые обеспечивают полный круговой обзор из одной точки. Используются изображения с равнопромежуточной проекцией (Plate Carrée), которая обеспечивает обзор в 360° по горизонтали и 180° по вертикали. Полученная круговая панорама представляется в виде проекции на сфере, то есть изображение накладывается на двухмерную поверхность сферы.
Панорамы в Просмотре улиц можно просматривать с помощью объекта GMSPanoramaView. Этот объект используется для отображения панорамы в качестве сферы, в центре которой находится камера. Вы можете программно управлять ориентацией камеры, а также несколькими свойствами, настраивающими окно просмотра.
Как получить доступ к данным Просмотра улиц
Панорамы в Просмотре улиц идентифицируются по одному из двух типов метаданных:
panoramaID- Уникальный идентификатор панорамы в Просмотре улиц.
panoramaIDможет со временем измениться, поэтому не подходит для долгосрочного использования или в качестве жестко закодированной ссылки. КлассpanoramaIDлучше всего использовать для программного доступа к различным изображениям Просмотра улиц. coordinate- Точное местоположение изображения, выраженное как
CLLocationCoordinate2D. Используйтеcoordinateдля постоянного хранения местоположения панорамы или для преобразования действий пользователя на карте в изображение Просмотра улиц.
И panoramaID, и coordinate хранятся как свойства объекта GMSPanorama. Вы можете запросить GMSPanorama у GMSPanoramaService с помощью coordinate или panoramaID. Результирующий объект будет содержать оба элемента метаданных, а также массив ссылок на соседние панорамы.
Как задать местоположение панорамы
Местоположение панорамы в Просмотре улиц можно задать на основе координат.
Метод
moveNearCoordinateзапрашивает панораму рядом с указанными координатами.Метод
moveNearCoordinate:radiusработает аналогично, но позволяет указать радиус поиска в метрах вокруг координаты.Метод
moveNearCoordinate:sourceпозволяет указать источник. Указать источник (параметр source) имеет смысл в случае, если вы хотите, чтобы Просмотр улиц искал панорамы только вне помещений. По умолчанию панорамы мест могут быть сняты как внутри, так и снаружи. Обратите внимание, что для указанного местоположения может не найтись панорамы, снятой вне помещений.Метод
moveNearCoordinate:radius:sourceпозволяет указать и радиус, и источник.
Изображения просмотра улиц
Как добавить окно Просмотра улиц
Ниже приведены основные шаги для добавления средства просмотра.
- (Один раз) Следуйте инструкциям в разделе Начало работы, чтобы получить SDK, ключ и добавить необходимые фреймворки.
- Создайте или обновите
ViewController. Если панорама должна отображаться, когда этот контроллер представления становится видимым, создайте ее в методеloadView. - Создайте класс
GMSPanoramaViewи его экземпляр с помощью методаinitWithFrame:классаGMSPanoramaView. Если это единственный вид контроллера, то в качестве фрейма карты можно использоватьCGRectZero. Размер карты будет изменен автоматически. - Задайте объект
GMSPanoramaViewв качестве представления контроллера представления. Пример:self.view = panoView;. - Задайте местоположение изображения Просмотра улиц с помощью метода, например
moveNearCoordinate:.
В показанном ниже коде на карту добавляется модуль просмотра улиц.
Swift
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:.
Swift
panoView.setAllGesturesEnabled(false)
Objective-C
[panoView setAllGesturesEnabled:NO];
Как запустить Просмотр улиц с помощью схемы URL
Изображения Просмотра улиц можно увидеть в приложении "Google Карты" для iOS. Вы можете запустить приложение "Google Карты" для iOS в режиме просмотра улиц, используя схему URL comgooglemaps и задав для параметра mapmode значение streetview. Ниже приведен пример URL, который запускает Просмотр улиц. Дополнительную информацию можно найти в документации по схеме URL.
comgooglemaps://?center=46.414382,10.013988&mapmode=streetview
Местоположение и точка обзора в Просмотре улиц
Объект GMSPanoramaCamera позволяет задать точку обзора камеры Просмотра улиц, используя сочетание направления, наклона и масштаба.
В приведенном ниже фрагменте показана ориентация камеры на юг с небольшим наклоном вниз.
Swift
panoView.camera = GMSPanoramaCamera(heading: 180, pitch: -10, zoom: 1)
Objective-C
panoView.camera = [GMSPanoramaCamera cameraWithHeading:180 pitch:-10 zoom:1];
Ориентация
Местоположение Просмотра улиц определяет фокус камеры для изображения, но не определяет ориентацию камеры для этого изображения.
для нее предусмотрены два свойства объекта GMSOrientation.
headingопределяет угол поворота вокруг позиции камеры в градусах относительно истинного севера. Направление измеряется по часовой стрелке: географическому северу соответствует значение 0, востоку – 90, югу – 180, а западу – 270.pitch(по умолчанию0) – определяет отклонение угла вверх или вниз от исходного угла наклона камеры по умолчанию, который часто (но не всегда) совершенно горизонтален. Например, при съемке панорамы на холме угол наклона по умолчанию не будет горизонтальным. Положительное значение угла наклона означает направление вверх (до +90° вверх перпендикулярно углу наклона по умолчанию), а отрицательное – вниз (до -90° вниз перпендикулярно углу наклона по умолчанию).
Zoom
Street View также поддерживает разные уровни детализации изображений с помощью масштабирования. Вы можете задать уровень масштабирования программно, или пользователи могут изменить его в средстве просмотра, сведя или разведя пальцы.
Перемещение камеры
После того как вы создали объект GMSPanoramaView и настроили для него камеру или оставили настройки по умолчанию, вы можете изменить их несколькими способами. Перемещения камеры можно анимировать, Текущие и новые значения атрибутов камеры интерполируются.
Вы можете изменить объект GMSPanoramaCamera и задать его в свойстве camera объекта GMSPanoramaView. Камера сразу же переместится на новое место без анимации. Объект GMSCameraPosition можно создать для настройки любого сочетания ориентации и масштаба.
Swift
panoView.camera = GMSPanoramaCamera(heading: 180, pitch: -10, zoom: 1)
Objective-C
panoView.camera = [GMSPanoramaCamera cameraWithHeading:180 pitch:-10 zoom:1];
Вы можете анимировать переход, вызвав метод animateToCamera:animationDuration: объекта GMSPanoramaView.
Кроме того, для управления камерой можно использовать базовую анимацию. Это возможно благодаря специальному CALayer в GMSPanoramaView, GMSPanoramaLayer.
Маркеры в просмотре улиц
Объект GMSPanoramaView может показывать маркеры на карте. Один и тот же объект GMSMarker можно использовать как в объекте GMSMapView, так и в объекте GMSPanoramaView, задав соответствующие свойства:
Swift
// 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. Если это расстояние станет слишком большим, маркер будет слишком маленьким для отображения и будет скрыт.
Чтобы удалить маркер с карты GMSPanoramaView, установите для свойства panoramaView значение nil.
Swift
marker.panoramaView = nil
Objective-C
marker.panoramaView = nil;
События
Вы можете отслеживать события, происходящие на панораме в Просмотре улиц, например когда пользователь нажимает на нее. Чтобы отслеживать события, необходимо реализовать протокол GMSPanoramaViewDelegate. Ознакомьтесь с руководством по событиям и списком методов в GMSPanoramaViewDelegate.