Por padrão, os dados são carregados apenas uma vez por link no Google Earth. Para impedir que os dados KML fiquem ociosos, é possível especificar um refreshMode de onExpire para quaisquer dados carregados por um elemento <href> (em um elemento "Link" ou "Icon"). Por padrão, os cabeçalhos de expiração HTTP especificam o período de expiração. Também é possível especificar um período de expiração em um KML NetworkLinkControl. O período é expresso como um XML dateTime (consulte XML Schema Part 2: Datatypes Second Edition). Se os cabeçalhos HTTP e os períodos de expiração KML forem especificados, o período de expiração KML terá precedência.
Exemplo 1: expiração usando o período de expiração do servidor HTTP
Este exemplo serve apenas como ilustração. Ele mostra um GroundOverlay com um elemento Icon que define um refreshMode de onExpire. Como nenhum período de expiração KML foi definido, esse exemplo usa o período de expiração do servidor 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">
A imagem atualiza automaticamente de acordo com a expiração
do servidor HTTP.
</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>
Exemplo 2: exemplo do uso do período de expiração KML
O exemplo a seguir fornece um marcador em coordenadas selecionadas aleatoriamente. Este exemplo inclui um elemento Link com um refreshMode de onExpire. Nesse caso, a data/hora de expiração é especificada (em um script Python) usando o novo elemento KML <expires>. Esse período de expiração KML tem precedência sobre qualquer período que possa ter sido especificado nos cabeçalhos HTTP.
Veja o NetworkLink KML contendo o link com os elementos <href> e <refreshMode>:
<?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>
Este é o script Python que define um período de expiração de [now + 11 seconds] e atualiza as coordenadas do marcador:
#!/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>'