Все готово!

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

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

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

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

Служебная программа для импорта Google Maps KML

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

Введение

KML является расширением формата данных XML и представляет информацию о географическом расположении на карте. Эта служебная программа позволяет преобразовывать объекты KML в географические фигуры и добавлять их в виде слоя поверх карты. Чтобы добавить данные KML на карту или удалить их, вызовите соответственно методы addLayerToMap() или removeLayerFromMap(). Доступ к свойствам объекта KML можно получить путем вызова метода getProperties() для любого элемента Placemark, GroundOverlay, Document или Folder.

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

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

Для импорта набора данных KML из локального ресурса вам понадобятся:

  • объект GoogleMap, в котором будет прорисован слой;
  • локальный файл ресурсов с данными KML;
  • объект Context, который необходим, чтобы открыть локальный файл ресурсов.
KmlLayer layer = new KmlLayer(getMap(), R.raw.kmlFile, getApplicationContext());

Для импорта и прорисовки набора данных KML из локального потока вам понадобятся:

  • объект GoogleMap, в котором будет прорисован слой;
  • InputStream с данными KML;
  • объект Context, необходимый для открытия локальных ресурсов.
KmlLayer layer = new KmlLayer(getMap(), kmlInputStream, getApplicationContext());

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

layer.addLayerToMap();

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

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

KmlLayer layer = new KmlLayer(getMap(), kmlInputStream, getApplicationContext());
 

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

layer.removeLayerFromMap();

Доступ к контейнерам KML

Чтобы получить доступ к контейнерам, которые добавлены к слою, можно вызывать getContainers() на созданном вами слое. Чтобы проверить, содержит ли тот или иной контейнер вложенные контейнеры, вызовите hasContainers(). Для доступа к этим вложенным контейнерам – подобно тому, как это можно сделать со слоем – вызовите getContainers().

Для доступа к контейнерам, которые не являются вложенными в KmlLayer или KmlContainer:

for (KmlContainer containers : layer.getContainers())
  // Do something to container
}

Для доступа к контейнерам, которые являются вложенными в KmlLayer или KmlContainer:

Iterable containers = layer.getContainers();
  public void accessContainers(containers) {
    for (KmlContainer container : containers ) {
    // Do something to container
    if (container.hasContainers()) {
      accessContainers(container.getContainers());
    }
  }
}

Доступ к меткам и наземным наложениям KML

Чтобы получить доступ к какой-либо метке или наземному наложению, добавленному к слою, можно вызвать getPlacemarks() или getGroundOverlays() для слоя или контейнера. Этот вызов вернет, соответственно, итерируемый массив KmlPlacemarks или KmlGroundOverlays.

Например, для доступа к объектам KmlPlacemark из слоя:

for (KmlPlacemark placemark : layer.getPlacemarks()) {
  // Do something to Placemark
}

Доступ к свойствам KML

Чтобы получить доступ к какому-либо свойству контейнера или метки, вызовите метод getProperty(), указав для него ключ свойства. Вы также можете вызвать hasProperty(), чтобы проверить наличие свойства. В этом примерен показано, как можно извлечь значение свойства "name" из контейнера, если оно существует.

for (KmlContainer container : layer.getContainers()) {
  if (container.hasProperty("name")) {
    System.out.println(container.getProperty("name")):
  }
}

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

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

Поддерживаемые элементы KML

Элемент KML Поддерживается? Примечание
<address> частично Хранится как значение свойства
<AddressDetails> нет
<Alias> нет
<altitude> нет
<altitudeMode> нет
<atom:author> нет
<atom:link> нет
<atom:name> нет
<BalloonStyle> частично Поддерживается только <text>
<begin> Н/Д <TimeSpan> не поддерживается
<bgColor> нет
<bottomFov> Н/Д <PhotoOverlay> не поддерживается
<Camera> нет
<Change> частично Поддерживаются только изменения стиля
<color> частично Включает #AABBGGRR и #BBGGRR; не поддерживается в <ScreenOverlay> и <GroundOverlay>
<colorMode> да
<cookie> нет <NetworkLinkControl> не поддерживается
<coordinates> да
<Create> нет
<Data> нет
<Delete> нет
<description> да Только простой текст, HTML-содержимое не поддерживается
<displayMode> нет
<displayName> нет
<Document> да
<drawOrder> да
<east> да
<end> Н/Д <TimeSpan> не поддерживается
<expires> нет <NetworkLinkControl> не поддерживается
<ExtendedData> частично Поддерживается только <Data> без указания типа, <SimpleData> или <Schema>; замена элементов для form$[dataName] не поддерживается.
<extrude> нет
<fill> да
<flyToView> нет <NetworkLinkControl> не поддерживается
<Folder> да
<gridOrigin> Н/Д <PhotoOverlay> не поддерживается
<GroundOverlay> да
<heading> да
<hotSpot> да
<href> да
<httpQuery> нет
<Icon> да
<IconStyle> да
<ImagePyramid> Н/Д <PhotoOverlay> не поддерживается
<innerBoundaryIs> да Неявным образом из порядка <LinearRing>
<ItemIcon> Н/Д <ListStyle> не поддерживается
<key> да
<kml> да
<LabelStyle> нет
<latitude> да
<LatLonAltBox> нет
<LatLonBox> да
<leftFov> Н/Д <PhotoOverlay> не поддерживается
<LinearRing> да
<LineString> да
<LineStyle> да
<Link> нет
<linkDescription> Н/Д <NetworkLinkControl> не поддерживается
<linkName> Н/Д <NetworkLinkControl> не поддерживается
<linkSnippet> Н/Д <NetworkLinkControl> не поддерживается
<listItemType> Н/Д <ListStyle> не поддерживается
<ListStyle> нет
<Location> Н/Д <Model> не поддерживается
<Lod> да
<longitude> да
<LookAt> нет
<maxAltitude> нет
<maxFadeExtent> нет
<maxHeight> Н/Д <PhotoOverlay> не поддерживается
<maxLodPixels> нет
<maxSessionLength> нет
<maxWidth> Н/Д <PhotoOverlay> не поддерживается
<message> нет
<minAltitude> нет
<minFadeExtent> нет
<minLodPixels> нет
<minRefreshPeriod> нет <NetworkLink>
<Model> нет
<MultiGeometry> да
<name> да
<near> Н/Д <PhotoOverlay> не поддерживается
<NetworkLink> нет
<NetworkLinkControl> нет
<north> да
<open> да Хранится как значение свойства
<Orientation> Н/Д <Model> не поддерживается
<outerBoundaryIs> да Неявным образом из порядка <LinearRing>
<outline> да
<overlayXY> нет
<Pair> да
<phoneNumber> частично Хранится как значение свойства
<PhotoOverlay> нет
<Placemark> да
<Point> да
<Polygon> да
<PolyStyle> да
<range> да
<refreshInterval> нет
<refreshMode> нет
<refreshVisibility> нет
<Region> да
<ResourceMap> Н/Д <Model> не поддерживается
<rightFov> Н/Д <PhotoOverlay> не поддерживается
<roll> Н/Д <Camera> и <Model> не поддерживаются
<rotation> да
<rotationXY> нет
<Scale> Н/Д <Model> не поддерживается
<scale> да
<Schema> нет
<SchemaData> нет
<ScreenOverlay> нет
<screenXY> Н/Д <ScreenOverlay> не поддерживается
<shape> Н/Д <PhotoOverlay> не поддерживается
<SimpleData> Н/Д <SchemaData> не поддерживается
<SimpleField> Н/Д <Schema> не поддерживается
<size> да
<Snippet> нет
<south> да
<state> Н/Д <ListStyle> не поддерживается
<Style> да
<StyleMap> частично Выделенный стиль не предоставляется. Внутристрочный StyleMaps не поддерживается.
<styleUrl> да
<targetHref> нет <Alias> не поддерживается
<tessellate> нет
<text> да
<textColor> нет
<tileSize> Н/Д <PhotoOverlay> не поддерживается
<tilt> нет
<TimeSpan> нет
<TimeStamp> нет
<topFov> Н/Д <PhotoOverlay> не поддерживается
<Update> Н/Д <NetworkLinkControl< не поддерживается
<value> да
<viewBoundScale> нет
<viewFormat> нет
<viewRefreshMode> нет
<viewRefreshTime> нет
<ViewVolume> Н/Д <PhotoOverlay> не поддерживается
<visibility> да
<west> да
<when> Н/Д <TimeStamp> не поддерживается
<width> да

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

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