我正在尝试通过 Google Earth API 加载 KML 文件并拥有自己的时间滑块控件。
为了确定我是否需要启用/显示我自己的自定义时间滑块,我正在查询谷歌地球 TimeControl 以查看是否设置了任何开始和结束时间。
如果我加载具有时间跨度的 KML,我会看到设置了开始时间和结束时间,并且谷歌地球时间滑块出现在谷歌地球中。
如果我然后加载另一个 KML 文件,但这次没有任何时间跨度,谷歌地球不会正确显示时间滑块,但是当我通过谷歌地球 API 询问 TimeControl 时,它仍然具有第一个 KML 的开始和结束时间。
我已附加(通过 kmltree bind() 方法)一个函数,该函数在 KML 加载后被调用。我询问 TimeControl 的正是这个函数。
为什么 TimeControl 仍然包含第一个 KML 的开始和结束时间?我检查太早了吗?
Javascript代码是:
tree = kmltree({
url: kmlUrl,
gex: gex,
element: $('.tree3'),
mapElement: $('#map3d'),
setExtent: true,
restoreState: false
});
$(tree).bind('kmlLoaded', function(event, kmlObject)
{
console.log("In kmlLoaded function");
time = ge.getTime();
if(ge.getTime().getControl())
{
console.log("We have a time primitive.");
control = time.getControl();
extents = control.getExtents();
// We have some time elements
beginTime = extents.getBegin();
console.log("beginTime is: " + beginTime.get());
endTime = extents.getEnd();
console.log("endTime is: " + endTime.get());
mainwindow.enablePlaybackWidgets(beginTime.get(), endTime.get());
}
else
{
console.log("We do NOT have a time primitive.");
mainwindow.enablePlaybackWidgets("", "");
}
});
tree.load()
我将它与 QT 应用程序结合使用,并在确定新加载的 KML 中是否存在时间跨度后,它会调用 QT 主窗口对象并相应地启用/禁用我的自定义时间滑块小部件。
加载第二个 KML 时,我希望没有 TimeControl(因为 Google Earth 没有显示),因此输入上面代码的“else”部分。不是这种情况。TimeControl 仍然存在,并且具有加载的第一个 KML 文件的开始时间和结束时间。
任何帮助将不胜感激。
谢谢