要逐步修改通过 NetworkLink 加载的数据,请使用 Update 元素,该元素是 NetworkLinkControl 的子元素。Update 可以包含按顺序处理的任意数量的 Change、Create 和 Delete 元素。
下图说明了事件的顺序。
![](https://developers.google.cn/static/kml/documentation/images/update.gif?authuser=1&hl=ur)
- 一个 NetworkLink 将“原始”KML 文件加载到 Google 地球中。以后要更新的元素需要在首次指定时明确定义 ID。该 ID 必须在给定文件中是唯一的。
- 另一个 NetworkLink 加载第二个 KML 文件,该文件包含对已加载的 KML 对象的更新(更改、创建和删除的任何组合操作)。此更新文件包含标识原始 KML 数据的两个引用:
- 为了能够在 Google 地球中查找对象,Update 元素会使用 targetHref 元素来标识定义了要修改的对象的原始文件。而为了标识要修改的对象或新对象的容器,Change、Create 和 Delete 元素会包含用于引用这些对象 ID 的 targetId 属性。
更改示例
以下示例显示了一组 NetworkLink 示例和 KML 数据文件。要运行该示例,请执行以下操作:
- 将 Point-load.kml 文件加载到 Google 地球中。该文件包含加载原始数据文件的 NetworkLink,其中包含两个点 (Point.kml)。
- 将 Update-load.kml 文件加载到 Google 地球中。该文件包含第二个 NetworkLink,该 NetworkLink 用于加载包含更新数据(point123 的新名称)的文件。
第一个文件包含用于加载数据文件的 NetworkLink,其中包含两个点。包含这些点的地标具有指定的 ID。第三个文件包含另一个 NetworkLink,用于添加更新文件。Change 元素可修改 point123 的地标名称。
下面是此示例中使用的四个文件。首先是 Point-load.kml 文件,该文件包含用于加载原始数据文件 (Point.kml) 的 NetworkLink。
<?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 文件,该文件包含原始数据(两个点)。ID 为“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>
接下来是第二个 NetworkLink 文件 (Update-load.kml)。该文件会加载包含更新信息的文件。
<?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>
最后是包含更新信息的 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>
<!-- coordinates remain the same -->
</Placemark>
</Change> </Update>
</NetworkLinkControl>
</kml>