【问题标题】:Loading kml files into the google-earth-plugin on a web-hosted page将 kml 文件加载到 Web 托管页面上的 google-earth-plugin 中
【发布时间】:2013-01-24 10:43:37
【问题描述】:

尽我所能,我似乎无法从我的公共托管网页上的 google-earth-plugin 实例访问 kml 文件。使用我能找到的所有谷歌开发人员帮助并尝试 Fetchkml 以及 kmlNetworkLink 均未成功,我尝试以一次一步的方式解决问题并达到以下僵局:

当我指向 code.google.com 上的 kml 源时,使用以下 javascript 代码有效

    google.load("earth", "1");
    var ge;
    function init() {
        google.earth.createInstance('mapthreedee', initCB, failureCB);
    }
    function initCB(instance) {
        ge = instance;
        ge.getWindow().setVisibility(true);
        ge.getNavigationControl().setVisibility(ge.VISIBILITY_SHOW);

        var link = ge.createLink('');
        var href = 'http://code.google.com/apis/earth/documentation/samples/kml_example.kml';
        link.setHref(href);

        var networkLink = ge.createNetworkLink('');
        networkLink.set(link, true, true); // Sets the link, refreshVisibility, and flyToView

        ge.getFeatures().appendChild(networkLink);
 }
         function failureCB(errorCode) {
    alert("failure");
    }

    google.setOnLoadCallback(init);         
</script>

google-earth 插件缩小到旧金山。但是,如果我使用 google Chrome 下载相同的 kml_example.kml 源文件,请将未修改的 kml 文件放入我的 google docs 文档空间,获取它的相关 id 地址并将此地址粘贴到我网页上的 javascript 代码中(没有对代码的其他更改),如下所示:

 google.load("earth", "1");
    变量 ge;
    函数初始化(){
        google.earth.createInstance('mapthreedee', initCB, failureCB);
    }
    函数initCB(实例){
        ge = 实例;
        ge.getWindow().setVisibility(true);
        ge.getNavigationControl().setVisibility(ge.VISIBILITY_SHOW);

        var link = ge.createLink('');
        var href = 'https://docs.google.com/open?id=0B3kCsTNlhwBaM2I5YTk0ZjEtOGVlNS00MGU4LTk5MTgtYTUyYzQ2Mzc2Mzhl';
        链接.setHref(href);

        var networkLink = ge.createNetworkLink('');
        networkLink.set(link, true, true); // 设置链接、refreshVisibility 和 flyToView

        ge.getFeatures().appendChild(networkLink);
 }
         功能失败CB(错误代码){
    警报(“失败”);
    }

    google.setOnLoadCallback(init);

页面加载时不会访问任何 kml,尽管 google-earth-plugin 仍然可以正确加载。我只会走这些极端,因为我在 google docs 中有一个 kmz 位置(在挪威),我可以通过我的 PC 上的 google Earth 客户端中的 Network Link 很好地访问它,但不会出现在 google-earth-plugin 中我尝试使用与上述相同的代码来访问它。

谁能指出我正确的方向?

这些网页位于http://geoffreychaucernm.co.uk/offlineTEST_SITE_ghp/googlemaps/googleEarth_3.htmlhttp://geoffreychaucernm.co.uk/offlineTEST_SITE_ghp/googlemaps/googleEarth_4.html

该站点托管在 1and1 Microsoft Web 服务器上。

【问题讨论】:

  • 该文档链接在 Google 地球客户端中对我不起作用。我其实很好奇 KMZ 文件是如何工作的。您是否必须先登录 Google 文档才能访问该文件? URL 是否可以直接使用?

标签: url google-docs google-earth-plugin


【解决方案1】:

你会踢自己的。

您在示例中显示的所有代码都很好。简单的问题是您用于位于您的 google 文档帐户上的 kml_example.kml 源文件的 url。

https://docs.google.com/open?id=0B3kCsTNlhwBaM2I5YTk0ZjEtOGVlNS00MGU4LTk5MTgtYTUyYzQ2Mzc2Mzhl

注意此 URL 重定向 到下载页面,而不是实际的 kml 文件。你需要为文件本身而不是这个中间页面获取一个 Uri。

简单的解决方法是用这个替换上面的 url,它应该可以工作

https://docs.google.com/uc?id=0B3kCsTNlhwBaM2I5YTk0ZjEtOGVlNS00MGU4LTk5MTgtYTUyYzQ2Mzc2Mzhl&export=download

注意这会下载文件(直接链接)。

编辑:

URL和附加export=download参数的细微变化很明显

https://docs.google.com/open?id=FILE_ID

https://docs.google.com/uc?id=FILE_ID&export=download

【讨论】:

  • 非常感谢。您建议的对 google Docs 查询字符串的调整效果很好。一千多谢。
  • 很高兴能帮上忙。请将答案标记为已接受 - 如果您这样做,人们将来更有可能帮助您!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-12-01
  • 1970-01-01
  • 1970-01-01
  • 2012-05-30
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多