Главная » Разработка для Android » ИНИЦИАЛИЗАЦИЯ MAPVIEW И MAPLOCATIONOVERLAY в Android приложении

0

 

Карта в Microjobs предусматривает два режима работы.

При запуске и когда мы выбираем Current Location (Актуальное местоположение) в блоке с изменяемым значением (Spinner), мы хотим отобразить карту того места, в котором находимся в данный момент, а также хотим, чтобы карта изменялась по мере того, как мы движемся. Для такой карты будем использовать класс MyLocationOverlay.

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

Рассмотрим в классе MicroJobs. Java код, который занимается инициализацией MapView, а также изучим класс MyLocationOverlay, отслеживающий наше актуальное местоположение:

Рассмотрим пояснения к коду.

Сначала находим MapView в файле компоновки main. xml так же, как находим и любой другой вид, и присваиваем его переменной mvMap типа MapView, чтобы при необходимости на этот вид можно было сослаться.

Получаем описатель для MapControllеr, связанного с MapView. Его будем использовать для панорамирования (анимирования) карты, увеличения, уменьшения, перехода от одного вида к другому и т. д.

Для работы с MyLocationOverlay создаем новый экземпляр и даем ему имя mMyLocationOverl ay.

Работу с mMyLocationOverlay мы начинаем с того, что определяем метод, который Android вызовет, когда мы получим наше первое изменение данных геолокации от поставщика геолокационной информации.

Метод runOnFirstFiх перемещает карту в точку нашего актуального местоположения (оно задается при помощи mMyLocationOverl ay.getMyLocationO) и ставит такую степень увеличения, которой будет достаточно, чтобы мы могли рассмотреть, какие вакансии предлагаются поблизости.

Идентифицируем маркер, который решили применить с mMyLocationOverlay в качестве отметки для имеющихся вакансий. Мы воспользуемся изображением, сохраненным в нашем каталоге res/drawable, это изображение называется androidtinyimage. Здесь мы видим полюбившегося нам зеленого робота. Мы определяем границы Drawable и добавляем накладываемый слой с этими маркерами в список других слоев, заданных для MapViewmvMap.

Теперь стоит задать несколько исходных атрибутов для mvMap, об этом мы поговорим ниже в данном разделе. Большинство из этих атрибутов пользователь может изменить при помощи кнопок меню.

Затем, следуя философии «убежденных перестраховщиков», просто на случай, если у нас в распоряжении вдруг не окажется поставщика геолокационной информации, который запустит runOnFirstFiх, вновь задаем здесь уровень увеличения.

Наконец, MapView требует от нас переопределить метод іsRouteDisplayed(), чтобы указать, будем ли мы отображать на нашей карте информацию о маршрутах. В нашем приложении мы этого делать не собираемся, поэтому здесь возвращается false.

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

Приказываем Android определить, какие поставщики геолокации доступны вокруг нас (GPS, идентификатор соты, триангуляция).

Подключаемся к лучшим из этих поставщиков.

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

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

MyLocationOverlay также позволяет нам разместить в MapView и картушку компаса, и ее тоже можно было бы обновлять, но в программе MJAndroid мы этой функцией пользоваться не будем.

Картографические атрибуты, задаваемые в коде, таковы.

setClіckabl е – мы хотим, чтобы пользователь мог коснуться пальцем определенной вакансии на экране и получить подробную информацию о данной работе. Поэтому для этого атрибута мы зададим значение true.

setEnabled – наследуется от android, view. View. Google не дает точного ответа на вопрос, что это означает в случае с MapView, но предположительно атрибут обеспечивает работу стандартных картографических функций – увеличения и уменьшения, панорамирования и т. д.

setSatellіte – выставляя такой флаг, мы добавляем вид со спутника со сводной карты. Если не поставить этот индикатор, то вид со спутника удаляется. Для начала попробуем обойтись на карте без спутниковой информации.

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

setStreetView – мы не собираемся на данном этапе отображать в приложении панораму улиц, хотя позволим пользователю включить эту функцию позже.

Источник: Android. Программирование на Java для нового поколения мобильных устройств

По теме:

  • Комментарии