即使KML文件没有时间元素,Google地球API也会设置时间原语

时间:2013-02-07 18:07:52

标签: javascript kml google-earth-plugin

我正在尝试通过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文件的开始和结束时间。

非常感谢任何帮助。

感谢

0 个答案:

没有答案