【问题标题】:JavaScript In KML Ignored By Google Earth Plugin谷歌地球插件忽略了 KML 中的 JavaScript
【发布时间】:2011-12-30 11:42:00
【问题描述】:

我创建了一个简单的 KML 文件,它可以在独立的 Google 地球客户端中运行,但在 Google 地球插件中根本无法运行(无论使用何种浏览器):

<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://www.opengis.net/kml/2.2" xmlns:gx="http://www.google.com/kml/ext/2.2" xmlns:kml="http://www.opengis.net/kml/2.2" xmlns:atom="http://www.w3.org/2005/Atom">
    <Folder>
        <name>South Florida</name>
        <open>1</open>
        <Document>
            <name>Miami</name>
            <Style id="miami_style">
                <IconStyle>
                    <Icon>
                        <href>http://i.imgur.com/CNrRU.gif</href>
                    </Icon>
                </IconStyle>
                <BalloonStyle>
                    <text><![CDATA[<font face="Arial">$[description]</font>]]></text>
                </BalloonStyle>
            </Style>
            <Folder>
                <name>Miami</name>
                <open>1</open>
                <Placemark id="Miami">
                    <name>Miami</name>
                    <description><![CDATA[
                        <script type="text/javascript">
                            function hideImage() {
                                var image = document.getElementById("image");
                                image.style.opacity = 0;
                                image.style.MozOpacity = 0;
                                image.style.KhtmlOpacity = 0;
                                image.filter = "alpha(opacity=0)";
                            }
                        </script>
                        <button id='clicker' onclick='hideImage();'>Click Me</button>
                        <img id="image" src="http://i.imgur.com/4rhT7.png">
                    ]]></description>
                    <styleUrl>#miami_style</styleUrl>
                    <Point>
                        <coordinates>-80.22643611111111,25.788952777777777,0</coordinates>
                    </Point>
                </Placemark>
            </Folder>
        </Document>
    </Folder>
</kml>

基本上,我有一个默认显示的图像,我想让它在我单击按钮时消失。最终,我希望能够通过单击来切换图像,但我认为这需要首先工作才能到达该步骤。

这在独立的 Google 地球中运行良好,但在 Google 地球插件中不起作用。

奇怪的是,如果我在 JavaScript 控制台中运行它之后气球已经显示,这也适用于 Google 地球插件。它只是不承认文件中已经存在的代码。

有什么想法吗?

【问题讨论】:

    标签: javascript kml google-earth google-earth-plugin


    【解决方案1】:

    一个简单的 JavaScript 代码(甚至是简单的 jQuery)可以输入到 or 中,它就会工作。但是仅在 Google 地球环境中。在 Google Earth API 折旧后,我们无法真正在 Google Earth 之外使用 .kml 文件中的 JS。 在此处阅读更多信息: http://www.mkrgeo-blog.com/content-management-in-kml-files/

    【讨论】:

    • 您的回答会提供更多详细信息。请你把你的解释充实一下吗?你说“一个简单的 JavaScript 代码(甚至是简单的 jQuery)”。你能展示一下那会是什么样子吗?
    • 好的,我说的是一个简单的 JavaScript 代码:时钟、闪烁的文本、可过滤表的温度转换器。一般是这样的。
    【解决方案2】:

    我有类似的问题,一直在寻找解决方案。我找到了这个答案,我还没有尝试过,但它可能对你有用:

    http://markmail.org/message/ivlw7jv3u5nxwkde

    我希望如此 - 请分享你所取得的任何成功!

    【讨论】:

    【解决方案3】:

    为了安全起见,Earth API 会删除 Balloon 描述中的所有 javascript。一种常见的解决方法是侦听地标上的单击事件(或更一般的气球打开事件),然后以编程方式使用完整内容重新创建 HtmlDivBalloon。更多详情请查看http://code.google.com/apis/earth/documentation/balloons.html#getballoonhtmlunsafe

    【讨论】:

    • 这可以在 KML 中完成吗?如果可能的话,我需要它在不修改服务器上的代码的情况下工作。
    • 没关系,我只是在向上滚动该页面后发现所有“描述”内容都被清除了。必须在服务器端覆盖生成气球的事件(或“点击”事件)才能使其正常工作。 叹息 code.google.com/apis/earth/documentation/…
    猜你喜欢
    • 2011-02-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-15
    • 1970-01-01
    • 2012-11-04
    • 1970-01-01
    相关资源
    最近更新 更多