Wygaśnięcie

Domyślnie dane są wczytywane tylko raz przez linki do Google Earth. Aby zapobiec wyświetlaniu nieaktualnych danych KML, możesz określić dla parametru RefreshMode wartość onExpire dla każdego danych ładowanych przez element <href> (w elemencie Link lub Ikona). Domyślnie nagłówki HTTP tracą ważność. Możesz też określić czas wygaśnięcia w pliku KML NetworkLinkControl. Czas jest wyrażony w formacie XML dateTime (zobacz XML Schema Part 2: Datatypes Second Edition). Jeśli określone są zarówno nagłówki HTTP, jak i czas ważności pliku KML, pierwszeństwo ma czas ważności pliku KML.

Przykład 1. Czas wygaśnięcia serwera HTTP

Ten przykład ma charakter poglądowy. Wyświetla ona GroundOverlay z ikoną, która ustawia RefreshMode na wartość onExpire. Ponieważ nie określono czasu ważności pliku KML, w tym przykładzie użyto czasu wygaśnięcia serwera 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>

Przykład 2: przykład użycia daty ważności pliku KML

Poniższy przykład pokazuje oznaczenie miejsca w losowo wybranych współrzędnych. Ten przykład zawiera link z trybem RefreshMode o wartości onExpire. W takim przypadku datę i godzinę zakończenia określa się w skrypcie Pythona za pomocą nowego elementu KML <expires>. Czas ważności pliku KML ma pierwszeństwo przed czasem podanym w nagłówkach HTTP.

Oto link do pliku KML NetworkLink zawierający elementy <href> i <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>

To jest skrypt Pythona, który ustawia czas wygaśnięcia [now + 11 sekund] i odświeża współrzędne oznaczenia miejsca:

#!/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
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>'

Powrót do góry