Загрузка файлов kml в плагин google-earth на веб-странице - PullRequest
2 голосов
/ 17 февраля 2012

Как ни старайся, мне кажется, я не могу получить доступ к файлам kml из экземпляра плагина google-earth на моей общедоступной веб-странице. Используя всю справку Google для разработчиков, которую я могу найти и пробуя Fetchkml, а также kmlNetworkLink, безуспешно, я попытался подойти к этой проблеме пошагово и достиг следующего тупика:

Использование следующего кода JavaScript работает , когда я указываю на источник в kml на code.google.com:

</p> <pre><code> google.load("earth", "1"); var ge; function init() { google.earth.createInstance('mapthreedee', initCB, failureCB); } function initCB(instance) { ge = instance; ge.getWindow().setVisibility(true); ge.getNavigationControl().setVisibility(ge.VISIBILITY_SHOW); var link = ge.createLink(''); var href = 'http://code.google.com/apis/earth/documentation/samples/kml_example.kml'; link.setHref(href); var networkLink = ge.createNetworkLink(''); networkLink.set(link, true, true); // Sets the link, refreshVisibility, and flyToView ge.getFeatures().appendChild(networkLink); } function failureCB(errorCode) { alert("failure"); } google.setOnLoadCallback(init); </script>

Плагин Google-Earth приближается к Сан-Франциско. Однако, если я скачаю этот же исходный файл kml_example.kml с помощью Google Chrome, поместите нетронутый файл kml в пространство документов моего документа Google, получите соответствующий идентификатор для него и вставьте этот адрес в код JavaScript на моей веб-странице (без другие изменения в коде вообще), вот так:

</p> <pre> google.load("earth", "1"); var ge; function init() { google.earth.createInstance('mapthreedee', initCB, failureCB); } function initCB(instance) { ge = instance; ge.getWindow().setVisibility(true); ge.getNavigationControl().setVisibility(ge.VISIBILITY_SHOW); var link = ge.createLink(''); var href = 'https://docs.google.com/open?id=0B3kCsTNlhwBaM2I5YTk0ZjEtOGVlNS00MGU4LTk5MTgtYTUyYzQ2Mzc2Mzhl'; link.setHref(href); var networkLink = ge.createNetworkLink(''); networkLink.set(link, true, true); // Sets the link, refreshVisibility, and flyToView ge.getFeatures().appendChild(networkLink); } function failureCB(errorCode) { alert("failure"); } google.setOnLoadCallback(init); </script>

При загрузке страницы доступ к kml невозможен, хотя плагин google-earth по-прежнему загружается правильно. Я только иду к этим крайностям, потому что местоположение в кмз (в Норвегии), которое у меня есть в Google Docs, к которому я могу получить отличный доступ через Network Link в клиенте Google Планета Земля на моем ПК, не отображается в плагине Google Earth, когда Я пытаюсь получить к нему доступ, используя код, идентичный приведенному выше.

Кто-нибудь может указать мне правильное направление?

Эти веб-страницы: http://geoffreychaucernm.co.uk/offlineTEST_SITE_ghp/googlemaps/googleEarth_3.html и http://geoffreychaucernm.co.uk/offlineTEST_SITE_ghp/googlemaps/googleEarth_4.html

Сайт размещен на веб-сервере 1 и 1 Microsoft.

1 Ответ

3 голосов
/ 18 февраля 2012

Вы собираетесь ударить себя.

Весь код, который вы показали в вашем примере, в порядке.Простая проблема - это URL, который вы используете для kml_example.kml исходного файла, расположенного в вашей учетной записи Google Docs.

https://docs.google.com/open?id=0B3kCsTNlhwBaM2I5YTk0ZjEtOGVlNS00MGU4LTk5MTgtYTUyYzQ2Mzc2Mzhl

Обратите внимание на этот URL перенаправляет настраница загрузки, а не фактический файл kml.Вам нужно получить Uri для самого файла, а не для этой промежуточной страницы.

Простое решение - заменить приведенный выше URL-адрес на этот, и он должен работать

https://docs.google.com/uc?id=0B3kCsTNlhwBaM2I5YTk0ZjEtOGVlNS00MGU4LTk5MTgtYTUyYzQ2Mzc2Mzhl&export=download

Обратите внимание, что этот файл загружается (ссылки напрямую).

Редактировать:

Небольшое изменение URL и дополнительный параметр export=download явно

https://docs.google.com/open?id=FILE_ID

https://docs.google.com/uc?id=FILE_ID&export=download
...