Несколько 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>