我正在尝试通过Google Earth API加载一个KML文件,并拥有自己的时间滑块控件。
要确定是否需要启用/显示我自己的自定义时间滑块,我正在设置Google Earth TimeControl,以查看是否设置了开始和结束时间。
如果我加载带有时间跨度的KML,我会看到设置了开始和结束时间,谷歌地球时间滑块出现在Google地球中。
如果我然后加载另一个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文件的开始和结束时间。
非常感谢任何帮助。
感谢