Несколько KML с плагином Google Планета Земля / ограничение API?

Итак, я создаю веб-приложение с использованием плагина Google Earth и API. Однако я столкнулся с проблемой при попытке отобразить более одного файла KML; загружается только последний указанный файл. Я использую процесс KmlNetworkLink чтобы отобразить все.

Это позволяет настольное приложение, поэтому я не уверен, является ли это ограничением API или нет. Кто-нибудь знает, если это ограничение?

Заранее спасибо.

Документация, которую я просматриваю: https://developers.google.com/earth/documentation/kml

1 ответ

Решение

РЕДАКТИРОВАТЬ: OP здесь. После нескольких недель работы над этим проектом я узнал, как правильно настроить несколько дорожек KML с помощью плагина Google Планета Земля. Я изменил свой предыдущий ответ (теперь показанный ниже), чтобы включить гораздо более чистую и абстрактную версию кода. Надеюсь, это кому-нибудь поможет. Кроме того (здесь нет в списке), можно сохранить все ваши местоположения KML в одном JSON и циклически перемещаться по нему, вызывая createView() при необходимости.

<!DOCTYPE html>
<html>
    <head>
        <title>Google Earth API Display</title>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <style>
            body, html {
                margin: 0;
                padding: 0;
                height: 100%;
                width: 100%;
            }
            #earthDisplay {
                height: 100%;
                width: 100%;
            }
        </style>
    </head>
    <body>

        <div id="earthDisplay"></div>

    <script type="text/javascript" src="https://www.google.com/jsapi"></script>
    <script type="text/javascript">

        /**
         * ================================================================== 
         *  Global Variables and Statements
         * ==================================================================
         */

        var ge;
        google.load("earth", "1", {"other_params": "false"});
        google.setOnLoadCallback(init);

        /**
         * ================================================================== 
         *  Functions
         * ==================================================================
         */

        function init()
        {
            google.earth.createInstance('earthDisplay', initCB, failureCB);
        }

        function initCB(instance)
        {
            var kmlLocation = "insert/your/file/here.kml";

            ge = instance;
            ge.getWindow().setVisibility(true);

            createView(kmlLocation);  // This function can be called multiple times to load different views.
        }

        function createView(kmlLocation)
        {
            var href = kmlLocation;
            var link = ge.createLink('');
            var networkLink = ge.createNetworkLink('');


            link.setHref(href);


            networkLink.set(link, true, true); // Sets the link, refreshVisibility, and flyToView


            ge.getWindow().setVisibility(true);

            ge.getFeatures().appendChild(networkLink);
        }

        function failureCB(errorCode)
        {
            alert("There has been an error with the Google Earth API. Please check your console.");
            console.log("Error with Google Earth API: " + errorCode);
        }

    </script>
</body>
</html>
Другие вопросы по тегам