打开CGI从浏览器链接在Google中生成KML文件

时间:2011-12-04 16:29:14

标签: html kml

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

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

生成网址的示例:“http://wildlifedb-testing.buffalofieldcampaign.org//qs.pl?format=kml&startdate=2007-11-27&enddate=2007-12-4&species=野牛&安培;活性=&安培; centerlat = 44.714721&安培; centerlon = -111.159067&安培; centerdist = 15&安培;极限= 2000"

我可以把这个网址添加到GE的网络链接中,它打开就好了,但我无法弄清楚如何直接从浏览器中打开它。我尝试设置window.location = url,这只会让浏览器下载文件。

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

3 个答案:

答案 0 :(得分:1)

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

查看维基百科如何处理这个问题。你从一个地理位置的页面(右上角的lat / lon)到GeoHack,它提供了一堆映射站点,包括GE。有些网站可以直接打开,因为它们是网络应用。 GE请求将KML作为下载发送,因为它是桌面应用程序。安全

答案 1 :(得分:0)

所以它最终是分离问题,一个是http标题,我可以通过在标题中添加以下内容来解决:

内容 - 处置:附件;文件名= “sightings.kml”

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

答案 2 :(得分:0)

可以使用Google Earth API,制作基于浏览器的Google地球实施方案。 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