【问题标题】:Opening CGI generated KML file in Google from a broweser link从浏览器链接在 Google 中打开 CGI 生成的 KML 文件
【发布时间】:2011-12-09 00:51:01
【问题描述】:

我有一个 Web 应用程序,它使用谷歌地图显示来自数据库的数据,使用 perl CGI 来查询数据库。我决定添加一个选项来查看谷歌地球中的数据(独立,而不是插件)而不是谷歌地图。

工作原理:用户填写表格,然后单击链接,该链接调用一些基于表格生成 url 的 javascript。根据表单输入,可能会打开 1 到 30 个 URL。

生成的 url 示例:"http://wildlifedb-testing.buffalofieldcampaign.org//qs.pl?format=kml&startdate=2007-11-27&enddate=2007-12-4&species=bison&activity=&centerlat=44.714721&centerlon =-111.159067&centerdist=15&limit=2000"

我可以使用该 url 并将其添加为 GE 中的网络链接,它可以正常打开,但我不知道如何直接从浏览器在 GE 中打开它。我尝试设置 window.location=url ,这只会导致浏览器下载文件。

是的,我的 mime 类型设置正确:“application/vnd.google-earth.kml+xml”

【问题讨论】:

    标签: html kml


    【解决方案1】:

    GE 不会直接从浏览器打开。您需要让服务器生成一个包含 KML 的可下载文件,用户将打开该文件。

    查看 Wikipedia 如何处理此问题。你从一个地理定位页面(右上角的纬度/经度)转到 GeoHack,它提供了一堆地图站点,包括 GE。有些网站可以直接打开,因为它们是 Web 应用程序。 GE 请求以下载的形式发送 KML,因为它是一个桌面应用程序。安全性。

    【讨论】:

    • 通过查看 GeoHack 我能够确定问题出在我的 http 标头上,添加 Content-Disposition: attachment; filename="sightings.kml" 到标题使它在下载后在 GE 中打开。谢谢
    • 很高兴您的应用正在运行。由于这个问题,我切换到 GE 插件。但这会产生另一组问题......
    【解决方案2】:

    所以它最终变成了单独的问题,一个带有 http 标头的问题,我可以通过在标头中添加以下内容来解决:

    Content-Disposition:附件;文件名="sightings.kml"

    另一个问题是能够打开多个文件,我可以通过使用 window.open() 而不是设置 window.location 来解决这个问题

    【讨论】:

      【解决方案3】:

      可以使用 Google Earth API 来实现基于浏览器的 Google Earth。 http://code.google.com/apis/earth/

      或者对于基本界面,将 KML 的 URL 传递给此 http://earth.google.com/kmlpreview/#url=http://www.example.com/path/to/file.kml

      (只是为了确保对您的网址进行 urlencode - 因为您有特殊字符)

      Example here

      【讨论】:

        猜你喜欢
        • 2014-03-08
        • 2012-02-21
        • 1970-01-01
        • 1970-01-01
        • 2014-03-12
        • 2021-08-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多