Все готово!

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

Активация Google Maps Android API

Чтобы помочь вам освоиться, мы покажем, как выполнить некоторые необходимые действия в консоли разработчика Google:

  1. Создание или выбор проекта
  2. Активация Google Maps Android API
  3. Создание соответствующих ключей

Наземные наложения

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

Примеры кода

Репозиторий ApiDemos на GitHub содержит пример, который демонстрирует наземные наложения:

Введение

Наземное наложение представляет собой изображение, прикрепленное к карте. В отличие от [маркеров], наземные наложения ориентированы по земной поверхности, а не по экрану, поэтому вращение, наклон или масштабирование карты приведет к изменению ориентации изображения. Наземные наложения применяются в случаях, когда необходимо закрепить отдельное изображение на одном участке карты. Если вы хотите добавить большое изображение, покрывающее обширный участок карты, рассмотрите использование мозаичного наложения.

Добавление наземного наложения

Чтобы добавить GroundOverlay, создайте объект GroundOverlayOptions, определяющий как само изображение, так и его положение. Можно также указать дополнительные параметры, которые повлияют на размещение изображения на карте. После определения всех необходимых параметров передайте объект в метод GoogleMap.addGroundOverlay(), чтобы добавить изображение к карте. Метод addGroundOverlay() возвращает объект GroundOverlay; сохраните ссылку на этот объект, если вы хотите изменить его позже.

Примечание. После добавления к карте изображение будет преобразовано в изображение со сторонами, выражаемыми степенями числа 2. Чтобы избежать этого преобразования, вы можете использовать исходное изображение с размерами, выраженными степенями числа 2, например, 128x512 или 1024x1024.

Пошагово:

  1. Создайте новый объект GroundOverlayOptions
  2. Укажите изображение как BitmapDescriptor.
  3. Установите положение изображения с помощью одного из доступных методов:
    • position(LatLng location, float width, float height)
    • position(LatLng location, float width)
    • positionFromBounds(LatLngBounds bounds)
  4. При необходимости установите дополнительные параметры, такие как transparency.
  5. Вызовите метод GoogleMap.addGroundOverlay(), чтобы добавить изображение на карту.

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

LatLng NEWARK = new LatLng(40.714086, -74.228697);

GroundOverlayOptions newarkMap = new GroundOverlayOptions()
        .image(BitmapDescriptorFactory.fromResource(R.drawable.newark_nj_1922))
        .position(NEWARK, 8600f, 6500f);
map.addGroundOverlay(newarkMap);

Если вам необходимо изменить или удалить наземное наложение после его добавления к карте, убедитесь в наличии привязки к объекту GroundOverlay. Это наложение можно изменить позже, внеся изменения в этот объект.

LatLng NEWARK = new LatLng(40.714086, -74.228697);

GroundOverlayOptions newarkMap = new GroundOverlayOptions()
        .image(BitmapDescriptorFactory.fromResource(R.drawable.newark_nj_1922))
        .position(NEWARK, 8600f, 6500f);

// Add an overlay to the map, retaining a handle to the GroundOverlay object.
GroundOverlay imageOverlay = map.addGroundOverlay(newarkMap);

Удаление наложения

Наземное наложение можно удалить с помощью метода GroundOverlay.remove().

imageOverlay.remove();

Изменение наложения

После добавления к карте наземное наложение можно изменить с помощью метода GroundOverlay.setImage(BitmapDescriptor).

// Add an overlay, retaining a handle to the GroundOverlay object.
GroundOverlay imageOverlay = map.addGroundOverlay(newarkMap);

// Update the GroundOverlay with a new image of the same dimensions.
imageOverlay = map.setImage(BitmapDescriptorFactory.fromResource(R.drawable.newark_nj_1975));

Метод setImage() заменит существующее изображение на другое с теми же размерами.

Позиция наземного наложения

Существуют два способа указать позицию наземного наложения:

  • Использование LatLng для указания центра наложения и значений в метрах, указывающих размеры изображения.
  • Использование LatLngBounds для указания северо-восточного и юго-западного углов изображения.

Позицию наземного наложения необходимо указать до его добавления к карте.

Использование географической привязки для выбора позиции изображения

При добавлении изображения вы указываете параметр LatLng, к которому оно будет привязано, и ширину наложения (в метрах). По умолчанию параметр anchor определяет центр изображения. Вы также можете дополнительно указать высоту наложения (в метрах). Если вы не укажете высоту наложения, она будет автоматически рассчитана с учетом сохранения пропорций изображения.

В приведенном ниже примере кода изображение размещается в позиции 40.714086, -74.228697, имеет ширину 8,6 км, высоту – 6,5 км. Координаты изображения зафиксированы по его нижнему левому углу.

GroundOverlayOptions newarkMap = new GroundOverlayOptions()

.image(BitmapDescriptorFactory.fromResource(R.drawable.newark_nj_1922)) .anchor(0, 1) .position(new LatLng(40.714086, -74.228697), 8600f, 6500f);

Использование параметра LatLngBounds для выбора позиции изображения

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

В приведенном ниже примере кода на карту помещается изображение, у которого юго-западный угол привязан к координатам 40.712216,-74.22655, а северо-восточный угол – к координатам 40.773941, -74.12544.

LatLngBounds newarkBounds = new LatLngBounds(
        new LatLng(40.712216, -74.22655),       // South west corner
        new LatLng(40.773941, -74.12544));      // North east corner
GroundOverlayOptions newarkMap = new GroundOverlayOptions()
        .image(BitmapDescriptorFactory.fromResource(R.drawable.newark_nj_1922))
        .positionFromBounds(newarkBounds);

Обработка событий наземного наложения

По умолчанию наземное наложение не реагирует на нажатие. Вы можете включить или отключить реакцию на нажатия, вызвав GroundOverlay.setClickable(boolean).

Используйте OnGroundOverlayClickListener для отслеживания событий нажатия наземного наложения, которое на них реагирует. Чтобы установить этот блок прослушивания на карте, вызовите GoogleMap.setOnGroundOverlayClickListener(OnGroundOverlayClickListener). Когда пользователь нажмет наземное наложение, вы получите обратный вызов onGroundOverlayClick(GroundOverlay).

Оставить отзыв о...

Текущей странице
Google Maps Android API
Google Maps Android API
Нужна помощь? Обратитесь в службу поддержки.