Google Планета Земля: возможен ли динамический параметризованный KML?

Я сделал большой файл KML ок. 23 мегабайта Google Планета Земля отображает его очень долго, отстает и занимает 1 ГБ ОЗУ и более. На более медленных компьютерах он также может не отображать некоторые области.

Таким образом, идея состоит в том, чтобы использовать параметризованный GET-запрос к серверу, возвращающему данные kml только для региона с указанными границами.

Может ли Google Earth инициировать и использовать такие запросы?

2 ответа

Решение

То, что вы спрашиваете, может быть сделано с помощью NetworkLink. Если вы динамически генерируете KML из сервлета, веб-службы, скрипта и т. Д., Вы можете указать Google Планета Земля отправить ограничивающий прямоугольник для его представления, из которого вы можете сгенерировать KML для возврата. Этот подход требует размещения специальной "службы" на сервере приложений / веб-сервере, который может генерировать KML в ответ на запросы, отправленные Google Планета Земля.

В вашем корневом уровне NetworkLink вам нужно определить refreshMode = onChange для обновления при изменении вида вместе с URL-адресом сервлета. Рекомендуется установить viewRefreshMode = onStop с элементом viewRefreshTime, чтобы данные выбирались только через 1 секунду после того, как пользователь прекращает масштабирование / перемещение, в противном случае данные постоянно обновляются. Кроме того, viewFormat необходим, чтобы дать команду Google Планета Земля вернуть ограничивающую рамку вида. В этом примере параметр BBOX добавляется к параметрам HTTP, отправляемым сервлету в запросе HTTP GET.

<Link>
      <href>servlet-url</href>
      <refreshMode>onChange</refreshMode>
      <viewRefreshMode>onStop</viewRefreshMode>
      <viewRefreshTime>1</viewRefreshTime>
      <viewFormat>BBOX=[bboxWest],[bboxSouth],[bboxEast],[bboxNorth]</viewFormat>
</Link>

Если ваши данные охватывают большую область, вы можете разбить данные на отдельные файлы KML, а затем указать сетевые ссылки на основе регионов в родительском файле KML. Этот подход позволит вам генерировать данные один раз в виде статических файлов KML и указывать только то, какие данные являются "активными" в зависимости от представления пользователя.

Связанный учебник:

https://developers.google.com/kml/documentation/regions

Ссылка:

https://developers.google.com/kml/documentation/kmlreference https://developers.google.com/kml/documentation/kmlreference https://developers.google.com/kml/documentation/kmlreference

Да, это не проблема вообще. Вы добавляете исходный URL своего KML в Google Планета Земля в виде URL с параметрами, а затем загружаете его как несколько отдельных источников. При таком подходе вы только "динамически" предоставляете критерии в момент добавления KML в GE, и с тех пор он выглядит как любой другой статический файл KML, который вы бы загрузили.

РЕДАКТИРОВАТЬ Теперь я вижу (вход в GE), что он на самом деле вызывает эти сетевые ссылки, как описано в @JasonM1 (в Add->NetworkLink)

Другие вопросы по тегам