Я создаю приложение, которое передает данные автономному клиенту Google Планета Земля.Я хочу отправить исходный набор данных, а затем динамически обновлять его, используя теги <NetworkLinkControl>
и <Update><cookie>
по мере изменения ситуации на сервере.Я генерирую KML с использованием библиотеки Java API для KML (JAK).К сожалению, хотя я могу подтвердить, что GE обновляет мой NetworkLink и загружает обновления, которые я отправляю, ни одно из моих обновлений не отображается в GE.После долгих чтений может показаться, что проблема может быть в <targetHref>
в обновлении, но я на 99,9% уверен, что посылаю ту же строку.
Часть того, что меня смутилоЯ видел противоречивую информацию о том, нужно ли добавлять <cookie>
значение элемента к <targetHref>
.Я действительно видел одно раннее обновление прототипа, когда обслуживал рукописные тестовые KML-файлы со статического URL-адреса сервера, поэтому я подозреваю, что это не так.На самом деле, это то, что разочаровывает в данный момент: я видел обновление работы на своем собственном компьютере, но не могу заставить его работать сейчас с тем, что выглядит как правильный и правильный KML.
Текущая настройка выглядит следующим образом (посторонние пространства имен XML выделены для ясности; "$ CLIENT_ID" - строка, подобная GUID):
Корневой файл KML, отправленный из http://server/kml/${CLIENT_ID}:
<kml xmlns="http://www.opengis.net/kml/2.2"
xmlns:gx="http://www.google.com/kml/ext/2.2"
xmlns:atom="http://www.w3.org/2005/Atom"
xmlns:xal="urn:oasis:names:tc:ciq:xsdschema:xAL:2.0"><NetworkLink>
<Link>
<href>http://server/kmlupdates/${CLIENT_ID}</href>
<refreshMode>onInterval</refreshMode>
<refreshInterval>1.0</refreshInterval>
<viewRefreshTime>0.0</viewRefreshTime>
<viewBoundScale>0.0</viewBoundScale>
</Link>
</NetworkLink></kml>
Исходное содержимое KML, отправленное с http://server/kmlupdates/${CLIENT_ID}:
<kml><NetworkLinkControl>
<minRefreshPeriod>0.0</minRefreshPeriod>
<maxSessionLength>-1.0</maxSessionLength>
<cookie>cookie=0|kmlRequestType=updates|projectID=6|lastUpdateSeenIndex=-1</cookie>
</NetworkLinkControl>
<Document id="myProject">
<name>My ProjectProject</name>
<Placemark id="pm1"><name>point1</name>
<Point><coordinates>-117.0,35.0</coordinates></Point>
</Placemark>
</Document></kml>
Позднее обновление KML подается с http://server/kmlupdates/${CLIENT_ID}:
<kml><NetworkLinkControl>
<minRefreshPeriod>0.0</minRefreshPeriod>
<maxSessionLength>-1.0</maxSessionLength>
<cookie>cookie=0|kmlRequestType=updates|projectID=6|lastUpdateSeenIndex=0</cookie>
<Update>
<targetHref>http://server/kmlupdates/${CLIENT_ID}</targetHref>
<Change>
<Placemark targetId="pm1">
<name>Name changed by Update Change</name>
</Placemark>
</Change>
</Update>
</NetworkLinkControl></kml>
Если у кого-нибудь есть какие-либо предложения по поводу того, что мне здесь не хватает, я был бы очень признателен.Спасибо!