Map in android xamarin

Содержание
  1. Запуск приложения Maps
  2. Создание намерения
  3. Схема URI геообъекта.
  4. Просмотр улиц
  5. Xamarin.Forms Map
  6. Инициализация и настройка
  7. Map Control
  8. Размещение и расстояние
  9. Маркеры
  10. Многоугольники, ломаные линии и круги
  11. Геокодирование
  12. Xamarin.Forms Map Control
  13. Отображение схемы
  14. Типы карт
  15. Отображение определенного расположения на карте
  16. Создание объекта Мапспан
  17. Перемещение схемы
  18. Изменение масштаба карты
  19. Настройка поведения карт
  20. Отображение данных о трафике
  21. Отключить прокрутку
  22. Отключить масштаб
  23. Отображение расположения пользователя
  24. Сохранить регион на карте при изменении макета
  25. Кнопки карт
  26. Использование API Карт Google в приложении
  27. Необходимые условия для использования API Карт Google
  28. Получение ключа API Карт Google
  29. Установка пакета SDK Сервисов Google Play
  30. Установка пакета Xamarin.GooglePlayServices.Maps из NuGet
  31. Указание необходимых разрешений
  32. Создание эмулятора с помощью API Google
  33. Класс GoogleMap
  34. Добавление MapFragment в действие
  35. Типы карт
  36. Свойства GoogleMap
  37. Взаимодействие с GoogleMap
  38. Изменение перспективы
  39. Отображение на карте
  40. Маркеры
  41. Окна сведений
  42. Объекты GroundOverlay
  43. Линии, окружности и многоугольники
  44. Реагирование на события пользователя
  45. События щелчка маркера
  46. События перетаскивания маркера
  47. События щелчка окна сведений

Запуск приложения Maps

Самый простой способ работы с картами в Xamarin.Android — использовать встроенное приложение Maps, показанное ниже:

При использовании приложения Maps карта не будет частью приложения. Вместо этого приложение запустит приложение Maps и загрузит карту извне. В следующем разделе рассматривается использование Xamarin.Android для запуска карт, аналогично этому примеру.

Создание намерения

Работа с приложением Maps так же проста, как создание намерения с соответствующим URI, установка действия в ActionView и вызов метода StartActivity. Например, следующий код запускает приложение Maps на точке с заданными широтой и долготой:

Этот код — все, что необходимо для запуска карты, показанной на снимке экрана выше. В дополнение к указанию широты и долготы, схема URI для Maps поддерживает несколько других параметров.

Схема URI геообъекта.

В коде выше использована географическая схема для создания универсального кода ресурса (URI). Эта схема URI поддерживает несколько форматов, перечисленных ниже.

geo:latitude,longitude — Открывает приложение Maps в центре в Lat/долготу.

geo:latitude,longitude?z=zoom — Открывает приложение Maps в центре Lat/долготы и масштабируется до указанного уровня. Масштаб может находиться в диапазоне от 1 до 23, где 1 соответствует отображению всей планеты Земля, а 23 — максимальному увеличению масштаба

geo:0,0?q=my+street+address — Открывает приложение Maps для расположения почтового адреса.

geo:0,0?q=business+near+city — Открывает приложение Maps и отображает результаты поиска с заметками.

Версии URI, которые принимают запрос (почтовый адрес или условия поиска), используют службу геокодирования Google для получения расположения, которое затем отображается на карте. Например, универсальный код ресурса (URI) geo:0,0?q=coop+Cambridge приводит к отображению показанной ниже карты:

Дополнительные сведения о схемах URI геообъектов см. в статье Отображение расположения на карте.

Просмотр улиц

Помимо геосхемы, Android также поддерживает загрузку представлений просмотра улиц из намерения. Ниже приведен пример приложения для просмотра улиц, запускаемого из Xamarin.Android.

Чтобы запустить просмотр улиц, просто используйте схему универсального кода ресурса (URI) google.streetview , как показано в коде ниже:

Использованная выше схема URI google.streetview имеет следующий вид:

Как видите, поддерживаются несколько параметров, как показано ниже.

lat — Широта расположения, которое должно отображаться в представлении улицы.

lng — Долгота расположения, отображаемая в представлении улицы.

pitch — Угол панорамы просмотра улицы, измеряемый от центра в градусах, где 90 градусов выполняется вертикально и-90 градусов.

yaw — Центр — вид панорамы просмотра улицы, измеряемый по часовой стрелке в градусах от Севера.

zoom — Коэффициент множителя для панорамы просмотра улицы, где 1,0 = нормальный масштаб, 2,0 = масштаб 2x, 3,0 = с масштабом 4X и т. д.

mz — Уровень масштаба карты, который будет использоваться при переходе к приложению Maps из представления улицы.

Работа со встроенным приложением Maps или просмотром улиц — это простой способ быстрого добавления поддержки карт. Однако Maps API в Android обеспечивает более тонкие возможности при работе с картами.

Источник

Xamarin.Forms Map

Инициализация и настройка

Xamarin. forms . Карты /»data-не =» external «> Xamarin.Forms . для использования функций карт в приложении требуется пакет NuGet Карты. Кроме того, для доступа к расположению пользователя требуются разрешения на расположение, предоставленные приложению.

Map Control

Map Элемент управления представляет собой кросс-платформенное представление для отображения и аннотирования карт. Он использует собственный элемент управления картой для каждой платформы, обеспечивая быстрый и знакомый интерфейс карт для пользователей.

Размещение и расстояние

Position Структура обычно используется при размещении схемы и ее ПИН-кодов, а также Distance структуры, которая при необходимости может использоваться при размещении схемы.

Маркеры

Map Элемент управления позволяет помечать расположения Pin объектами. Pin — Это маркер на карте, который открывает информационное окно при касании.

Многоугольники, ломаные линии и круги

Polygon Polyline элементы, и Circle позволяют выделять определенные области на карте. Объект Polygon является полностью замкнутой фигурой, которая может иметь цвет обводки и заливки. А Polyline — это строка, которая не полностью охватывает область. Circle Выделяет круглую область на карте.

Геокодирование

Geocoder Класс выполняет преобразование между строковыми адресами и координатами широты и долготы, хранящимися в Position объектах.

Источник

Xamarin.Forms Map Control

Map Элемент управления представляет собой кросс-платформенное представление для отображения и аннотирования карт. Он использует собственный элемент управления картой для каждой платформы, обеспечивая быстрый и знакомый интерфейс карт для пользователей:

Map Класс определяет следующие свойства, которые управляют внешним видом и поведением карт:

, представляет список ПИН-кодов на карте.

  • TrafficEnabled Тип bool — указывает, перемещается ли на карте данные трафика.
  • Xamarin_Forms _Maps_Map_VisibleRegion «Data-=» Absolute-path «> VisibleRegion типа MapSpan , Возвращает отображаемую в данный момент область на карте.
  • Эти свойства, за исключением MapElements Pins свойств, и VisibleRegion , поддерживаются BindableProperty объектами, что означает, что они могут быть целями привязок данных.

    Map Класс также определяет MapClicked событие, которое возникает при нажатии на карту. MapClickedEventArgs Объект, сопровождающий событие, имеет одно свойство с именем Position типа Position . При срабатывании события Position свойству присваивается расположение, которое было касанием. Сведения о Position структуре см. в разделе Position .

    Отображение схемы

    Map Можно отобразить, добавив его в макет или страницу:

    xmlns для ссылки на элементы управления Карты требуется дополнительное определение пространства имен Xamarin.Forms . В предыдущем примере на Xamarin.Forms.Maps пространство имен ссылается maps ключевое слово.

    Эквивалентный код на C# выглядит так:

    В этом примере вызывается конструктор по умолчанию Map , который выравнивает карту по Рим:

    Кроме того, MapSpan аргумент можно передать в Map конструктор, чтобы задать центральную точку и уровень масштабирования для схемы при ее загрузке. Дополнительные сведения см. в разделе Отображение определенного расположения на карте.

    Типы карт

    Xamarin_Forms _Maps_Map_MapType «Data-=» Absolute-Path » Map.MapType можно задать для свойства > MapType элемента перечисления, чтобы определить стиль отображения для схемы. Перечисление MapType определяет следующие члены:

    • Street Указывает, что будет отображаться улица.
    • Satellite Указывает, что будет отображена схема, содержащая сопутствующие изображения.
    • Hybrid Указывает, что будет отображено сочетание улицы и вспомогательных данных на карте.

    Эквивалентный код на C# выглядит так:

    Отображение определенного расположения на карте

    Область отображения, отображаемая при загрузке схемы, может быть задана путем передачи MapSpan аргумента в Map конструктор:

    Эквивалентный код на C# выглядит так:

    В этом примере создается Map объект, который показывает область, указанную MapSpan объектом. Объект выравнивается по MapSpan центру широты и долготы, представленные Position объектом, и охватывает 0,01 широты и 0,01 долготы. Сведения о Position структуре см. в разделе Position . Дополнительные сведения о передаче аргументов в XAML см. в разделе Передача аргументов в XAML.

    Результат заключается в том, что при отображении карт она выравнивается по центру в определенном месте и охватывает определенное количество широт и долготы:

    Читайте также:  Андроид для бмв е90

    Создание объекта Мапспан

    Существует ряд подходов к созданию MapSpan объектов. Распространенный подход — предоставить MapSpan конструктору необходимые аргументы. Это Широта и Долгота, представленные Position объектом, и double значения, представляющие градусы широты и долготы, которые являются частью MapSpan . Сведения о Position структуре см. в разделе Position .

    Кроме того, в классе есть три метода MapSpan , которые возвращают новые MapSpan объекты:

    1. ClampLatitude Возвращает объект MapSpan с тем же, LongitudeDegrees что и экземпляр класса метода, и радиус, определенный его north south аргументами и.
    2. FromCenterAndRadius Возвращает объект MapSpan , определяемый его PositionDistance аргументами и.
    3. WithZoom Возвращает объект MapSpan с тем же центром, что и экземпляр класса метода, но с радиусом, умноженным на double аргумент.

    Сведения о Distance структуре см. в разделе Distance .

    После MapSpan создания можно получить доступ к следующим свойствам, чтобы получить данные о нем:

    Перемещение схемы

    Map.MoveToRegion Метод может быть вызван для изменения расположения и масштаба на карте. Этот метод принимает MapSpan аргумент, который определяет область отображаемой схемы и ее масштаб.

    В следующем коде показан пример перемещения отображаемой области на карте:

    Изменение масштаба карты

    Уровень масштабирования Map можно изменить без изменения его расположения. Это можно сделать с помощью пользовательского интерфейса Map или программным путем, вызвав MoveToRegion метод с MapSpan аргументом, который использует текущее расположение в качестве Position аргумента:

    В этом примере MoveToRegion метод вызывается с MapSpan аргументом, указывающим текущее расположение Map, с помощью MoveToRegion Свойства >Xamarin_Forms _Maps_Map_VisibleRegion «Data-переадресная привязка =» абсолютного пути » Map.VisibleRegion , а также уровень масштаба в градусах широты и долготы. Общий результат заключается в том, что уровень масштабирования в карте изменяется, но его расположение — нет. Альтернативный подход к реализации масштабирования на карте заключается в использовании MapSpan.WithZoom метода для управления коэффициентом масштабирования.

    При изменении масштаба схемы (с помощью пользовательского интерфейса Map или программным путем) требуется, чтобы Xamarin_Forms _Maps_Map_HasZoomEnabled свойству «Data-Absolute =» абсолютного пути «> Map.HasZoomEnabled true . Дополнительные сведения об этом свойстве см. в разделе Отключение масштабирования.

    Настройка поведения карт

    Поведение объекта Map можно настроить, задав некоторые его свойства и обрабатывая MapClicked событие.

    Дополнительные настройки поведения карт можно получить, создав пользовательский модуль подготовки к отображению карт. Для получения дополнительной информации см. Customizing a Xamarin.Forms Map.

    Отображение данных о трафике

    Map Класс определяет TrafficEnabled свойство типа bool . По умолчанию это свойство имеет значение false , которое указывает на то, что данные трафика не будут наложены на карту. Если это свойство имеет значение true , данные трафика передаются на карте. В следующем примере показано задание этого свойства:

    Эквивалентный код на C# выглядит так:

    Отключить прокрутку

    Map Класс определяет Map свойство Xamarin_Forms _Maps_Map_HasScrollEnabled «Data-=» Absolute-Path «> HasScrollEnabled типа bool . По умолчанию это свойство имеет значение true , указывающее, что карте разрешена прокрутка. Если для этого свойства задано значение false , то на карте не выполняется прокрутка. В следующем примере показано задание этого свойства:

    Эквивалентный код на C# выглядит так:

    Отключить масштаб

    Map Класс определяет Map свойство Xamarin_Forms _Maps_Map_HasZoomEnabled «Data-=» Absolute-Path «> HasZoomEnabled типа bool . По умолчанию это свойство имеет значение true , которое указывает на то, что на карте можно выполнить масштаб. Если это свойство имеет значение false , карту нельзя изменить. В следующем примере показано задание этого свойства:

    Эквивалентный код на C# выглядит так:

    Отображение расположения пользователя

    Map Класс определяет Map свойство Xamarin_Forms _Maps_Map_IsShowingUser «Data-=» Absolute-Path «> IsShowingUser типа bool . По умолчанию это свойство имеет значение false , указывающее, что на карте не отображается текущее местоположение пользователя. Если для этого свойства задано значение true , то на карте отображается текущее расположение пользователя. В следующем примере показано задание этого свойства:

    Эквивалентный код на C# выглядит так:

    в iOS, Android и универсальная платформа Windows для доступа к расположению пользователя требуются разрешения на расположение, предоставленные приложению. Дополнительные сведения см. в разделе Конфигурация платформы.

    Сохранить регион на карте при изменении макета

    Map Класс определяет MoveToLastRegionOnLayoutChange свойство типа bool . По умолчанию это свойство имеет значение true , которое указывает, что отображаемая область отображения будет перемещена из текущей области в ее ранее заданную область при изменении макета, например при смене устройства. Если для этого свойства задано значение false , отображаемая область отображения останется в центре при изменении макета. В следующем примере показано задание этого свойства:

    Эквивалентный код на C# выглядит так:

    Кнопки карт

    Map Класс определяет MapClicked событие, возникающее при нажатии на карту. MapClickedEventArgs Объект, сопровождающий событие, имеет одно свойство с именем Position типа Position . При срабатывании события Position свойству присваивается расположение, которое было касанием. Сведения о Position структуре см. в разделе Position .

    В следующем примере кода показан обработчик событий для MapClicked события:

    В этом примере OnMapClicked обработчик событий выводит широту и долготу, представляющую расположение касания. Обработчик событий можно зарегистрировать в MapClicked событии следующим образом:

    Источник

    Использование API Карт Google в приложении

    Использовать приложение Карты удобно, но иногда требуется добавить карты непосредственно в свое приложение. Помимо встроенного приложения карт, Google также предлагает собственный API сопоставления для Android. API Карт подходит для случаев, когда требуется обеспечить больший контроль над процессом сопоставления. Возможности API Карт:

    • программное изменение перспективы на карте;
    • добавление и настройка маркеров;
    • наложение на карту заметок.

    В отличие от устаревшего API Карт Google для Android версии 1, API Карт Google для Android версии 2 является частью Сервисов Google Play. Приложение Xamarin.Android должно соответствовать определенным требованиям, чтобы использовать API Карт Google для Android.

    Необходимые условия для использования API Карт Google

    Прежде чем можно будет использовать API Карт, необходимо выполнить несколько шагов, в том числе:

    Получение ключа API Карт Google

    Первым шагом является получение ключа API Карт Google. Учтите, что невозможно будет использовать ключ API из устаревшего выпуска API Карт Google версии 1. Сведения о том, как получить ключ API и использовать его в Xamarin.Android, см. в разделе Получение ключа API Google Maps.

    Установка пакета SDK Сервисов Google Play

    Сервисы Google Play — это технология Google, которая позволяет приложениям Android использовать преимущества различных функций Google, таких как Google+, In-App Billing и Карты. Эти функции доступны на устройствах Android в качестве фоновых служб, которые содержатся в APK Сервисов Google Play.

    Приложения Android взаимодействуют с Сервисами Google Play через клиентскую библиотеку Сервисов Google Play. Эта библиотека содержит интерфейсы и классы отдельных служб, таких как Карты. На следующей схеме показана связь между приложением Android и Сервисами Google Play.

    API Карт для Android поставляется в составе Сервисов Google Play. Прежде чем приложение Xamarin.Android сможет использовать API Карт, необходимо установить пакет SDK Сервисов Google Play с помощью Диспетчера SDK Android. На следующем снимке экрана показано, где в Диспетчере SDK Android можно найти клиент пакета SDK Сервисов Google Play.

    APK Сервисов Google Play — это лицензированный продукт, который может быть доступен не на всех устройствах. Если он не установлен на устройстве, Карты Google работать не будут.

    Установка пакета Xamarin.GooglePlayServices.Maps из NuGet

    Пакет Xamarin.GooglePlayServices.Maps содержит привязки Xamarin.Android для API Карт из Сервисов Google Play. Чтобы добавить пакет Карт из Сервисов Google Play, щелкните правой кнопкой мыши папку Ссылки проекта в обозревателе решений и выберите Управление пакетами NuGet.

    Откроется диспетчер пакетов NuGet. Щелкните Обзор и в поле поиска введите Xamarin Google Play Services Maps. Выберите Xamarin.GooglePlayServices.Maps и щелкните Установить. (Если этот пакет уже установлен, щелкните Обновить.)

    Читайте также:  Good girl gone bad gallery mod android

    Обратите внимание на то, что также будут установлены следующие пакеты зависимостей:

    • Xamarin.GooglePlayServices.Base
    • Xamarin.GooglePlayServices.Basement
    • Xamarin.GooglePlayServices.Tasks

    Указание необходимых разрешений

    Приложения должны указать требования к оборудованию и разрешениям для использования API Карт Google. Некоторые разрешения автоматически предоставляются пакетом SDK Сервисов Google Play, и разработчику не нужно явно добавлять их в AndroidManfest.XML.

    доступ к сетевому состоянию — API Карты должен иметь возможность проверить, может ли он загрузить плитки карт.

    Доступ к Интернету — доступ к Интернету необходим для загрузки плиток карт и взаимодействия с серверами Google Play для доступа через API.

    Следующие разрешения и компоненты должны быть указаны в AndroidManifest.XML для API Карт Google для Android.

    OpenGL ES v2 — приложение должно объявлять требование для OpenGL ES v2.

    ключ api Google Карты — ключ api используется для подтверждения регистрации приложения и разрешения на использование Сервисы Google Play. Дополнительные сведения об этом ключе см. в разделе Получение ключа API Google Maps.

    Запросите устаревший клиент HTTP Apache — приложения, предназначенные для Android 9,0 (уровень API 28) или выше, должны указывать, что устаревший клиент HTTP Apache является необязательной библиотекой для использования.

    доступ к службам google web-services — приложению требуются разрешения на доступ к веб-службам google, поддерживающим интерфейс API Android Карты.

    Разрешения для уведомлений сервисы Google Play — приложению должно быть предоставлено разрешение на получение удаленных уведомлений от сервисы Google Play.

    Доступ к поставщикам расположения — это необязательные разрешения. Они позволяют классу GoogleMap отображать расположение устройства на карте.

    Кроме того, в Android 9 клиентская библиотека Apache HTTP удалена из bootclasspath, поэтому она недоступна для приложений, нацеленных на уровень API 28 или более поздней версии. application Чтобы продолжить использование HTTP-клиента Apache в приложениях, предназначенных для API 28 или более поздней версии, необходимо добавить следующую строку в узел файла application .

    Самые старые версии пакета SDK для Google Play требовали, чтобы приложение запрашивало разрешение WRITE_EXTERNAL_STORAGE . Это требование не распространяется на последние привязки Xamarin для Сервисов Google Play.

    В следующем фрагменте кода приведен пример параметров, которые необходимо добавить в AndroidManifest.XML.

    Помимо запроса разрешений AndroidManifest.XML, приложение также должно выполнять проверку разрешений среды выполнения для ACCESS_FINE_LOCATION разрешений и. Дополнительные сведения о выполнении проверок разрешений во время выполнения см. в руководстве по управлению разрешениями Xamarin.Android.

    Создание эмулятора с помощью API Google

    В случае, если физическое устройство Android с Сервисами Google Play отсутствует, можно создать образ эмулятора для разработки. Дополнительные сведения см. в статье Диспетчер устройств.

    Класс GoogleMap

    После выполнения необходимых условий можно приступить к разработке приложения и использовать API Карт для Android. Класс GoogleMap — это основной API, который приложение Xamarin.Android будет использовать для отображения Карт Google для Android и взаимодействия с ними. Этот класс отвечает за выполнение следующих задач.

    Взаимодействие со службами Google Play для авторизации приложения с помощью веб-службы Google.

    Скачивание, кэширование и отображение фрагментов карты.

    Отображение для пользователя элементов управления пользовательского интерфейса, таких как сдвиг и масштабирование.

    Отображение маркеров и геометрических фигур на картах.

    GoogleMap добавляется в действие одним из двух способов.

    Мапфрагмент — мапфрагмент — это специализированный фрагмент, который выступает в качестве узла для объекта. Для MapFragment требуется уровень API для Android 12 или более поздняя версия. Более старые версии Android могут использовать SupportMapFragment. В этом руководством основное внимание уделяется использованию класса MapFragment .

    MapView — MapView является специализированным подклассом представления, который может использоваться в качестве узла для объекта. Пользователи этого класса должны пересылать все методы жизненного цикла действия в класс MapView .

    Каждый из этих контейнеров предоставляет свойство Map , которое возвращает экземпляр GoogleMap . Следует отдавать предпочтение классу MapFragment, так как это более простой API, уменьшающий объем стандартного кода, который разработчику необходимо реализовать вручную.

    Добавление MapFragment в действие

    На следующем снимке экрана показан пример простого MapFragment .

    Как и для других классов Fragment, существуют два способа добавления MapFragment в действие.

    Декларативно — можно добавить с помощью XML-файла макета для действия. В приведенном ниже фрагменте XML демонстрируется использование элемента fragment .

    Программно. Экземпляр можно создать программно с помощью метода MapFragment.NewInstance , а затем добавить в действие. В этом фрагменте кода показан самый простой способ создания объекта MapFragment и его добавления в действие.

    Объект MapFragment можно настроить, передав объект GoogleMapOptions в NewInstance . Это описано в разделе Свойства GoogleMap далее в этом руководстве.

    Метод MapFragment.GetMapAsync используется для инициализации GoogleMap , размещенного во фрагменте, и для получения ссылки на объект Map, размещенный в MapFragment . Этот метод принимает объект, реализующий интерфейс IOnMapReadyCallback .

    Этот интерфейс содержит один метод, IMapReadyCallback.OnMapReady(MapFragment map) , который будет вызываться, когда приложение может взаимодействовать с объектом GoogleMap . В следующем фрагменте кода показано, как действие Android может инициализировать MapFragment и реализовать интерфейс IOnMapReadyCallback .

    Типы карт

    В API Карт Google доступны пять различных типов карт.

    Обычная — это тип карты по умолчанию. На ней показаны дороги и важные топографические особенности, а также некоторые искусственные точки интереса (например, здания и мосты).

    Спутниковая — на этой карте показаны фотографии со спутников.

    Гибридная — на этой карте показаны фотографии со спутников и карты дорог.

    Ландшафта — в этом основном показаны функции топографикал с некоторыми дорогыми компонентами.

    Нет — эта схема не загружает плитки, она отображается как пустая сетка.

    На рисунке ниже показаны три различных типа карты: слева направо (обычная, гибридная, ландшафтная).

    Свойство GoogleMap.MapType используется для задания или изменения отображаемого типа карты. В следующем фрагменте кода показано, как отобразить спутниковую карту.

    Свойства GoogleMap

    GoogleMap определяет несколько свойств, которые позволяют управлять функциональностью и внешним видом карты. Одним из способов настройки начального состояния для GoogleMap является передача объекта GoogleMap при создании MapFragment . В следующем фрагменте кода представлен один из примеров использования объекта GoogleMapOptions при создании MapFragment .

    Другим способом настройки в GoogleMap является Управление свойствами GoogleMap объекта Map. В следующем примере кода показано, как настроить GoogleMap для отображения элементов управления масштабом и компаса.

    Взаимодействие с GoogleMap

    API Карт для Android предоставляет интерфейсы API, позволяющие действию изменять перспективу, добавлять маркеры, размещать пользовательские наложения или отображать геометрические фигуры. В этом разделе рассказывается, как выполнить некоторые из этих задач в Xamarin.Android.

    Изменение перспективы

    Карты моделируются в виде плоской поверхности и отображаются на экране на основе проекции Меркатора. Представление карты — это камера, направленная строго сверху на эту поверхность. Положением камеры можно управлять, изменяя расположение, масштаб, наклон и азимут. Класс CameraUpdate используется для изменения расположения камеры. CameraUpdate экземпляры объектов не создаются напрямую, а Карты API предоставляет класс CameraUpdate .

    После CameraUpdate создания объекта он передается в качестве параметра методам CameraUpdate или гуглемап. аниматекамера . Метод MoveCamera мгновенно обновляет карту, а метод AnimateCamera обеспечивает плавный анимированный переход.

    Этот фрагмент кода демонстрирует простой пример того, как использовать CameraUpdateFactory для создания CameraUpdate , увеличивающего уровень масштаба на единицу.

    API Карт предоставляет класс CameraPosition, который будет объединять все возможные значения расположения камеры. Экземпляр этого класса может быть предоставлен методу камераупдатефактори. невкамерапоситион , который будет возвращать объект. Карты API также включает класс камерапоситион. Builder , предоставляющий api fluent для создания объектов. В следующем фрагменте кода показан пример создания CameraUpdate из CameraPosition и его использования для изменения расположения камеры на GoogleMap .

    Читайте также:  Как звонить со второй симки андроид

    В предыдущем фрагменте кода определенное расположение на карте представлено классом LatLng. Уровень масштаба равен 18, что является произвольным значением масштаба, используемым в Картах Google. Азимут — это показания компаса, измеряемые по часовой стрелке от направления на север. Свойство Tilt управляет углом обзора и задает угол в 25 градусов от вертикали. На следующем снимке экрана показан GoogleMap после выполнения предыдущего кода.

    Отображение на карте

    API Карт для Android предоставляет API для отображения следующих элементов на карте:

    маркеры — это специальные значки, используемые для указания отдельного расположения на карте;

    наложения — это изображения, с помощью которых на карте можно указать коллекцию расположений или область;

    линии, многоугольники и окружности — это интерфейсы API, позволяющие действиям добавлять фигуры на карту.

    Маркеры

    API Карт предоставляет класс Marker, который инкапсулирует все данные об отдельном расположении на карте. По умолчанию класс Marker использует стандартный значок, предоставляемый Картами Google. Можно настроить внешний вид маркера и его реагирование на щелчки пользователя.

    Добавление маркера

    Чтобы добавить маркер к карте, необходимо создать новый объект маркероптионс , а затем вызвать метод аддмаркер для экземпляра. Этот метод вернет объект Marker.

    Заголовок маркера будет отображаться в окне сведений, когда пользователь коснется маркера. На следующем снимке экрана показано, как выглядит этот маркер.

    Настройка маркера

    Можно настроить значок, используемый маркером, вызвав метод MarkerOptions.InvokeIcon при добавлении маркера на карту. Этот метод принимает объект BitmapDescriptor, содержащий данные, необходимые для отображения значка. Класс битмапдескрипторфактори предоставляет некоторые вспомогательные методы для упрощения создания . Ниже перечислены некоторые из этих методов.

    DefaultMarker(float colour) — используйте маркер Google Карты по умолчанию, но измените цвет.

    FromAsset(string assetName) — Используйте пользовательский значок из указанного файла в папке Assets.

    FromBitmap(Bitmap image) — Используйте указанное растровое изображение в качестве значка.

    FromFile(string fileName) — Создание пользовательского значка из файла по указанному пути.

    FromResource(int resourceId) — Создание пользовательского значка из указанного ресурса.

    В следующем фрагменте кода показан пример создания маркера по умолчанию голубого цвета.

    Окна сведений

    Окна сведений — это специальные всплывающие окна, которые отображают сведения для пользователя при касании определенного маркера. По умолчанию в окне сведений отображается содержимое заголовка маркера. Если заголовок не назначен, окно сведений не отображается. Одновременно может отображаться только одно окно сведений.

    Окно сведений можно настроить, реализовав интерфейс GoogleMap.IInfoWindowAdapter. В этом интерфейсе доступны два важных метода.

    public View GetInfoWindow(Marker marker) — Этот метод вызывается для получения настраиваемого окна сведений для маркера. Если возвращается значение null , будет использоваться метод отображения окна по умолчанию. Если возвращается объект View, то этот объект будет помещен внутрь рамки окна сведений.

    public View GetInfoContents(Marker marker) — Этот метод будет вызываться, только если Жетинфовиндов возвращает null . Этот метод может возвращать значение null , если должно использоваться применяемое по умолчанию отображение содержимого окна сведений. В противном случае этот метод должен возвращать объект View с содержимым окна сведений.

    Окно сведений не является динамическим представлением. Вместо этого Android преобразовывает объект View в статическое растровое изображение и показывает его на изображении. Это означает, что окно сведений не может реагировать на события касания или жесты, а его содержимое не будет автоматически обновляться. Чтобы обновить окно сведений, необходимо вызвать метод GoogleMap.ShowInfoWindow.

    На следующем рисунке показано несколько примеров настраиваемых окон сведений. Слева показано изображение с настроенным содержимым, а справа — изображение, на котором для окна с содержимым настроены скругленные углы.

    Объекты GroundOverlay

    В отличие от маркеров, указывающих определенное расположение на карте, GroundOverlay — это изображение, которое используется для указания коллекции расположений или области на карте.

    Добавление GroundOverlay

    Добавление наземного наложения на карту аналогично добавлению маркера. Сначала создается объект GroundOverlayOptions. Затем этот объект передается в качестве параметра в метод GoogleMap.AddGroundOverlay , который возвращает объект GroundOverlay . Этот фрагмент кода является примером добавления наземного наложения на карту.

    На следующем снимке экрана показано. как это наложение выглядит на карте.

    Линии, окружности и многоугольники

    Существуют три простых типа геометрических фигур, которые можно добавить на карту. Они перечислены ниже.

    Ломаная линия — это ряд соединенных сегментов линии. Она может отмечать путь на карте или образовывать геометрическую фигуру.

    Окружность — на карте будет нарисована окружность.

    Многоугольник — это замкнутая фигура, позволяющая обвести области на карте.

    Ломаные линии

    Ломаная линия — это список последовательных объектов, указывающих вершины каждого сегмента линии. Чтобы создать ломаную линию, сначала нужно создать объект PolylineOptions и добавить в него точки. Затем объект PolylineOption передается в объект GoogleMap путем вызова метода AddPolyline .

    Окружности

    Окружности создаются путем создания объекта CircleOption, который определяет центр и радиус окружности в метрах. Окружность рисуется на карте путем вызова GoogleMap.AddCircle. В следующем фрагменте кода показано, как нарисовать окружность.

    многоугольники

    Объекты Polygon похожи на объекты Polyline , за исключением того, что они замкнутые. Polygon являются замкнутым циклом и их внутренним заполнением. Polygon создаются точно так же Polyline , как и, за исключением вызванного метода Polygon .

    В отличие от объектов Polyline , объекты Polygon являются замкнутыми. Многоугольник замыкается методом AddPolygon , который соединяет линией первую и последнюю точки. В следующем фрагменте кода создается закрашенный прямоугольник в области, использованной в предыдущем фрагменте кода с примером Polyline .

    Реагирование на события пользователя

    Существуют три типа взаимодействия пользователя с картой:

    щелчок маркера — пользователь щелкает маркер;

    перетаскивание маркера — пользователь касается маркера и не отпускает его;

    щелчок окна сведений — пользователь щелкает окно сведений.

    Каждое из этих событий будет рассмотрено более подробно ниже.

    События щелчка маркера

    Событие MarkerClicked возникает при касании маркера пользователем. Это событие принимает объект GoogleMap.MarkerClickEventArgs в качестве параметра. Этот класс содержит два свойства.

    GoogleMap.MarkerClickEventArgs.Handled — Для этого свойства должно быть задано значение true , указывающее, что обработчик событий использует событие. Если для этого свойства задано значение false , то в дополнение к пользовательскому поведению обработчика событий будет выполнено поведение по умолчанию.

    Marker — Это свойство является ссылкой на маркер, который вызвал MarkerClick событие.

    В этом фрагменте кода показан пример MarkerClick , который изменит положение камеры на карте.

    События перетаскивания маркера

    Это событие возникает, когда пользователь перетаскивает маркер. По умолчанию маркеры невозможно перетаскивать. Маркер можно сделать перетаскиваемым, присвоив свойству Marker.Draggable значение true или вызвав метод MarkerOptions.Draggable , указав true в качестве параметра.

    Чтобы перетащить маркер, пользователь должен щелкнуть маркер и не отнимать палец от карты. Когда пользователь проведет этим пальцем по экрану, маркер последует за ним. Когда пользователь отнимет палец от экрана, маркер останется на выбранном месте.

    Ниже перечислены различные события, которые будут создаваться для перетаскиваемого маркера.

    GoogleMap.MarkerDragStart(object sender, GoogleMap.MarkerDragStartEventArgs e) — Это событие возникает при первом перетаскивании маркера пользователем.

    GoogleMap.MarkerDrag(object sender, GoogleMap.MarkerDragEventArgs e) — Это событие возникает при перетаскивании маркера.

    GoogleMap.MarkerDragEnd(object sender, GoogleMap.MarkerDragEndEventArgs e) — Это событие возникает при завершении перетаскивания маркера пользователем.

    Каждый EventArgs содержит одно свойство P0 , которое является ссылкой на перетаскиваемый объект Marker .

    События щелчка окна сведений

    Одновременно может отображаться только одно окно сведений. Когда пользователь щелкает окно сведений на карте, объект Map создает событие InfoWindowClick . В следующем фрагменте кода показано, как подключить обработчик к событию.

    Помните, что окно сведений является статическим объектом View , отображаемым на карте в виде картинки. Любые мини-приложения, такие как кнопки, флажки или текстовые представления, помещенные в окно сведений, будут статичны и не будут реагировать на какие-либо связанные события пользователя.

    Источник

    Оцените статью