Все готово!

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

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

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

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

Служебная программа Google Maps Android GeoJSON

  1. Введение
  2. Добавление слоя GeoJsonLayer на карту
  3. Удаление слоя GeoJsonLayer
  4. Добавление и удаление элемента GeoJsonFeature
  5. Доступ к элементам GeoJsonFeature и их свойства
  6. Выбор стиля для слоя GeoJsonLayer и элементов GeoJsonFeature
  7. Просмотр демонстрационного приложения

Введение

GeoJSON является расширением формата данных JSON и представляет географическую информацию. Эта служебная программа позволяет сохранять географические элементы в формате GeoJSON и прорисовывать их в виде верхнего слоя карты. Чтобы добавить данные GeoJSON на карту или удалить их, вызовите соответственно методы addLayer() или clearLayer(). Подобным образом можно добавлять и удалять отдельные элементы, вызывая методы addFeature() и removeFeature() и передавая объект GeoJsonFeature. Для доступа к элементам вызовите метод getFeatures(), чтобы получить итерируемый массив всех объектов GeoJsonFeature, добавленных к слою.

Вы также можете выбрать стили по умолчанию, которые будут применены к элементам перед их добавлением к слою. Для этого можно использовать методы getDefaultPointStyle(), getDefaultLineStringStyle() или getDefaultPolygonStyle() и установить параметры стиля для каждого из них. В качестве альтернативы можно выбрать стиль для отдельного элемента GeoJsonFeature, вызвав метод setPointStyle(), setLineStringStyle() или setPolygonStyle() для этого элемента и передав соответствующий объект стиля.

Добавление слоя GeoJsonLayer на карту

Чтобы добавить слой GeoJson на карту, сначала необходимо создать экземпляр класса GeoJsonLayer. Существуют два способа создания экземпляра GeoJsonLayer.

Для импорта из объекта JSONObject вам понадобятся:

  • объект GoogleMap, в котором будет прорисован этот слой;
  • объект JSONObject, содержащий данные GeoJSON для добавления к слою.
GeoJsonLayer layer = new GeoJsonLayer(getMap(), geoJsonData);

Для импорта из локального файла GeoJSON вам понадобятся:

  • объект GoogleMap, в котором будет прорисован этот слой;
  • локальный файл ресурсов, содержащий данные GeoJSON;
  • объект Context, необходимый для открытия локального файла ресурсов.
GeoJsonLayer layer = new GeoJsonLayer(getMap(), R.raw.geoJsonFile,
getApplicationContext());

После создания слоя GeoJsonLayer вызовите addLayer(), чтобы добавить импортированные данные на карту:

layer.addLayer();

Удаление слоя GeoJsonLayer

Предположим, что вы добавили этот слой:

GeoJsonLayer layer = new GeoJsonLayer(getMap(), geoJsonData);

Чтобы удалить слой GeoJsonLayer, вызовите clearLayer():

layer.clearLayer();

Добавление и удаление элемента GeoJsonFeature

Элемент в GeoJSON имеет тип feature. Он содержит геометрию, элемент свойства и дополнительно включает в себя ограничивающий прямоугольник или идентификатор.

Объекты GeoJsonFeature можно создавать индивидуально и добавлять их к слою GeoJsonLayer.

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

GeoJsonPoint point = new Point(new LatLng(0, 0));
HashMap<String, String> properties = new HashMap<String, String>();
properties.put(“Ocean”, “South Atlantic”);
GeoJsonFeature pointFeature = new GeoJsonFeature(point, “Origin”, properties, null);

Чтобы добавить этот элемент к слою, вызовите addFeature() и передайте элемент для добавления.

layer.addFeature(pointFeature);

Чтобы удалить элемент после его добавления к слою, вызовите removeFeature() и передайте элемент для удаления.

layer.removeFeature(pointFeature);

Доступ к элементам GeoJsonFeature и их свойства

Чтобы получить доступ ко всем элементам GeoJsonFeature, которые добавлены к слою, вы можете вызвать getFeatures() на созданном вами слое GeoJsonLayer. В результате будет возвращен итерируемый массив элементов GeoJsonFeature, для доступа к которому можно использовать цикл for-each, как это показано ниже.

for (GeoJsonFeature feature : layer.getFeatures()) {
  // do something to the feature
}

С помощью методов hasProperty() и getProperty() вместе с методом getFeatures() вы можете проверить, имеется ли у каждого сохраненного элемента определенное свойство, и получить к нему доступ, если оно существует.

GeoJsonPoint point = new Point(new LatLng(0, 0));
HashMap<String, String> properties = new HashMap<String, String>();
properties.put(“Ocean”, “South Atlantic”);
GeoJsonFeature pointFeature = new GeoJsonFeature(point, “Origin”, properties, null);
for (GeoJsonFeature feature : layer.getFeatures()) {
  if (feature.hasProperty(“Ocean”)) {
    String oceanProperty = feature.getProperty(“Ocean”);
  }
}

Выбор стиля для слоя GeoJsonLayer и элементов GeoJsonFeature

Для слоя GeoJsonLayer можно выбрать стили по умолчанию или определить стиль для его отдельных элементов.

Стили по умолчанию

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

Ниже приведены шаги для применения стиля по умолчанию.

  1. Получите соответствующий объект стиля по умолчанию – это может быть один из стилей GeoJsonPointStyle, GeoJsonLineStringStyle или GeoJsonPolygonStyle.
  2. Примените желаемые параметры к стилю.

Например, в следующем примере кода показано, как изменить стиль по умолчанию для точки. В результате точки становятся перетаскиваемыми, у них появляется заголовок и фрагмент текста.

GeoJsonPointStyle pointStyle = layer.getDefaultPointStyle();
pointStyle.setDraggable(true);
pointStyle.setTitle(“Hello, World!”);
pointStyle.setSnippet(“I am a draggable marker”);

Стили для конкретных элементов GeoJsonFeature

В качестве альтернативы можно выбрать стиль для отдельных элементов в слое. Ниже приведены шаги для применения стиля к элементу GeoJsonFeature.

  1. Создайте соответствующий объект стиля – это может быть один из стилей GeoJsonPointStyle, GeoJsonLineStringStyle или GeoJsonPolygonStyle.
  2. Примените желаемые параметры к стилю.
  3. Передайте объект стиля в соответствующий метод для GeoJsonFeature – setPointStyle(), setLineStringStyle() или setPolygonStyle().

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

// Create a new feature containing a linestring
ArrayList<LatLng> lineStringArray = new ArrayList<LatLng>();
lineStringArray.add(new LatLng(0, 0));
lineStringArray.add(new LatLng(50, 50));
GeoJsonLineString lineString = new GeoJsonLineString(lineStringArray);
GeoJsonFeature lineStringFeature = new GeoJsonFeature(lineString, null, null, null);

// Set the color of the linestring to red
GeoJsonLineStringStyle lineStringStyle = new GeoJsonLineStringStyle();
lineStringStyle.setColor(Color.RED);

// Set the style of the feature
lineStringFeature.setLineStringStyle(lineStringStyle);

Просмотр демонстрационного приложения

Пример импорта файла GeoJSON из URL-адреса и создания слоя с его использованием представлен в операции GeoJsonDemoActivity демонстрационного приложения, которое входит в комплект библиотеки программ. Процедура запуска демонстрационного приложения описана в руководстве по настройке.

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

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