Обновления

Чтобы данные, загружаемые с помощью сетевой ссылки, можно было постепенно обновлять, используется <Update> – дочерний элемент элемента <NetworkLinkControl>. Он может содержать любое количество элементов <Change>, <Create> и <Delete>, которые обрабатываются по порядку.

Последовательность событий схематически представлена ниже.

  1. Компонент NetworkLink загружает "исходный" KML-файл в Google Планету Земля. Элементу, который потребуется обновлять, необходимо присвоить идентификатор (id) уже на этапе определения. В одном файле не должно быть двух одинаковых идентификаторов.
  2. Другой компонент NetworkLink загружает второй KML-файл, содержащий обновления уже загруженных объектов KML (элементы <Change>, <Create> и <Delete> в любой комбинации). В этом файле содержатся две ссылки на исходные данные KML.
  3. Чтобы элемент <Update> мог обновить нужный объект, используется тег targetHref, содержащий ссылку на исходный файл, в котором определен этот объект. Чтобы определить объекты, подлежащие изменению, или контейнеры новых объектов, используются элементы <Change>, <Create> и <Delete> с тегом targetId, содержащим ссылки на id этих объектов.

Пример изменения

В этом примере рассматривается набор компонентов NetworkLink и KML-файлов. Чтобы запустить его, выполните указанные ниже действия.

  1. Загрузите файл Point-load.kml в Google Планету Земля. Он содержит компонент NetworkLink, который загружает исходный файл с двумя точками (Point.kml).
  2. Загрузите файл Update-load.kml в Google Планету Земля. Он содержит второй компонент NetworkLink, который загружает файл с данными обновления (с новым названием точки point123).

В первом файле содержится компонент NetworkLink, который загружает файл данных с двумя точками. Меткам, содержащим эти точки, присвоены идентификаторы. В третьем файле содержится ещё один компонент NetworkLink, добавляющий файл Update. Элемент <Change> изменяет название метки point123.

Ниже представлены четыре файла из этого примера. Первый из них – Point-load.kml с компонентом NetworkLink, который загружает исходный файл (Point.kml).

<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://www.opengis.net/kml/2.2">
<NetworkLink>
<name>Loads Point.kml</name>
<Link>
<href>http://developers.google.com/kml/documentation/Point.kml</href>
</Link>
</NetworkLink>
</kml>

Второй файл – Point.kml с исходными данными (двумя точками). Обновляться будет точка с идентификатором point123.

<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://www.opengis.net/kml/2.2">
<Document>
<Placemark id="pm123">
<name>point123</name>
<Point> <coordinates>-95.44,40.42,0</coordinates> </Point>
</Placemark> <Placemark id="pm456"> <name>point456</name>
<Point> <coordinates>-95.43,40.42,0</coordinates>
</Point>
</Placemark>
</Document>
</kml>

Следующий файл – Update-load.kml – содержит второй компонент NetworkLink, который загружает файл с данными обновления.

<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://www.opengis.net/kml/2.2">
<NetworkLink>
<name>Update</name>
<Link>
<href>http://developers.google.com/kml/documentation/NetworkLinkControl-Update.kml</href></Link> </NetworkLink>
</kml>

Последний файл – NetworkLinkControl-Update.kml – содержит данные обновления.

<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://www.opengis.net/kml/2.2">
<NetworkLinkControl>
<Update>
<targetHref>http://developers.google.com/kml/documentation/Point.kml</targetHref>
<Change>
<Placemark targetId="pm123"> <name>Name changed by Update Change</name>
<!-- координаты не меняются -->
</Placemark>
</Change> </Update>
</NetworkLinkControl>
</kml>

Наверх