使用Google地图加载本地.kml文件?

我创build了一个hello世界程序来加载一个本地的kml文件(借用谷歌的文档):

var ctaLayer = new google.maps.KmlLayer("http://localhost:8080/kml/cta.kml"); 

这不起作用(没有得到加载)。

但是,当我将该行更改为:

  var ctaLayer = new google.maps.KmlLayer("http://gmaps-samples.googlecode.com/svn/trunk/ggeoxml/cta.kml"); 

它正确加载。 两个kml文件是相同的。 当我自己提供服务时,我需要做些什么来加载它? (我尝试了绝对path和相对path,我知道我使用的path是正确的…)

此外,我添加了正确的MIMEtypes到我的应用服务器的configuration文件:

 <mime-mapping> <extension>kml</extension> <mime-type>application/vnd.google-earth.kml+xml</mime-type> </mime-mapping> <mime-mapping> <extension>kmz</extension> <mime-type>application/vnd.google-earth.kmz</mime-type> </mime-mapping> 

但它仍然无法加载。

我在google的文档中发现了这个:

Google Maps API支持显示地理信息的KML和GeoRSS数据格式。 这些数据格式使用KmlLayer对象显示在地图上,其构造函数采用可公开访问的KML或GeoRSS文件的URL。

所以我想我要做的事情是不可能的,除非公众可以访问的url提供kml,除非有人可以certificate

KML无法访问,因为它在本地机器上,谷歌无法访问,因为它不知道如何到达本地主机:8080

不幸的是,你不能使用“localhost”。 你有两个select:

  1. 将kml放在公共可用的域上。 (如果谷歌无法访问它,它将无法正常工作)
  2. 使用geoxml3,它基本上做谷歌,但允许你下载和主持parsing器JS文件你自己。 它将允许您加载一个LOCALHOST KML并为您parsing(可通过JSON访问的对象)( http://code.google.com/p/geoxml3/ )。

select#1可能不适合那些从事防务合同工作,并处理敏感信息的人,因为kml在后台发送到谷歌,并在地图上呈现。

本网站要求您将整个KML文件复制/粘贴到网站中。 或者,您可以使用Dropbox使用公用文件夹托pipeKML文件。 在公共Dropbox文件夹中有一个右键单击上下文菜单,允许您复制该URL。

Interesting Posts