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)