所以,我正在使用Google Earth Plugin和API构建一个Web应用程序。但是,我遇到了尝试显示多个KML文件的问题;只有最后一个文件加载。我正在使用流程KmlNetworkLink
来显示所有内容。
桌面应用程序允许这样做,因此我不确定这是否只是对API的限制。有谁知道这是否有限制?
提前致谢。
我正在查看的文档: https://developers.google.com/earth/documentation/kml
答案 0 :(得分:0)
编辑:OP在这里。在这个项目工作几周后,我已经学会了如何使用Google Earth插件正确设置多个KML曲目。我已经修改了我之前的答案(现在显示如下),以包含更清晰和抽象的代码版本。希望这有助于某人。此外(此处未列出),可以将所有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>