デフォルトでは、データはリンクによって Google Earth に一度だけ読み込まれます。KML データが古くならないよう、(Link 要素または Icon 要素の)<href> 要素で読み込むすべてのデータに対して、refreshMode に onExpire を指定できます。デフォルトでは、HTTP 有効期限ヘッダーによって有効期限が決まります。KML の NetworkLinkControl の expires でも有効期限を指定できるようになりました。時間は XML の dateTime として表します(XML Schema Part 2: Datatypes Second Edition を参照)。HTTP ヘッダーと KML 有効期限の両方が指定されている場合、KML 有効期限が優先されます。
例 1: HTTP サーバーの有効期限を使用した有効期限
次の例は、説明目的のみで提供されています。refreshMode が onExpire に設定されている Icon を持つ、GroundOverlay を表しています。KML の有効期限は設定されていないため、この例では、HTTP サーバーの有効期限が使用されます。
<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://www.opengis.net/kml/2.2">
<Document>
<name>refreshMode onExpire</name>
<Snippet maxLines="10">
Image automatically reloads according to http
server expiration.
</Snippet>
<GroundOverlay>
<Icon>
<href>http://www.someserver.com/image.jpeg</href>
<refreshMode>onExpire</refreshMode>
</Icon>
<LatLonBox>
<!-- from edit session in earth -->
<!-- The roof of a building in the Presidio -->
<north>37.80385180177469</north>
<east>-122.4558710620651</east>
<south>37.80337403503347</south>
<west>-122.4564295653771</west>
</LatLonBox>
</GroundOverlay>
</Document>
</kml>
例 2: KML の有効期限を使用した例
次の例は、ランダムに選択された座標上に Placemark を表示します。この例には、refreshMode が onExpire に設定された Link が含まれています。この場合、有効期限の日時は新しい KML 要素の <expires> を使用して(Python スクリプト内で)指定します。この KML の有効期限は、HTTP ヘッダーに指定されているどの時間よりも優先されます。
<href> 要素と <refreshMode> 要素を持つ Link が含まれている KML の NetworkLink は次のとおりです:
<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://www.opengis.net/kml/2.2">
<Document>
<NetworkLink>
<Link>
<href>http://dev.someserver.com/cgi-bin/expires.py</href>
<refreshMode>onExpire</refreshMode>
</Link>
</NetworkLink>
</Document>
</kml>
有効期限を「現在時刻 + 11 秒(now + 11)」に設定し、Placemark の座標を更新する Python スクリプトは次のとおりです:
#!/usr/bin/python
import random
import time
lat = random.random() * 180. - 90.
lon = random.random() * 360. - 180.
now = time.time()
future = time.gmtime(now + 11)
y = future[0]
mo = future[1]
d = future[2]
h = future[3]
mi = future[4]
s = future[5]
iso8601 = '%04d-%02d-%02dT%02d:%02d:%02dZ' % (y,mo,d,h,mi,s)
print 'Content-type: application/vnd.google-earth.kml+xml'
print '<?xml version=\"1.0\" encoding=\"UTF-8\"?>'
print '<kml xmlns=\"http://www.opengis.net/kml/2.2\">'
# must be child of <kml>
print '<NetworkLinkControl>'
print '<expires>%s</expires>' % iso8601
print '</NetworkLinkControl>'
print '<Placemark>'
print '<name>placemark expires %s</name>' % iso8601
print '<Point>'
print '<coordinates>%f,%f,0</coordinates>' % (lon,lat)
print '</Point>'
print '</Placemark>'
print '</kml>'