使用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:
- 将kml放在公共可用的域上。 (如果谷歌无法访问它,它将无法正常工作)
- 使用geoxml3,它基本上做谷歌,但允许你下载和主持parsing器JS文件你自己。 它将允许您加载一个LOCALHOST KML并为您parsing(可通过JSON访问的对象)( http://code.google.com/p/geoxml3/ )。
select#1可能不适合那些从事防务合同工作,并处理敏感信息的人,因为kml在后台发送到谷歌,并在地图上呈现。
本网站要求您将整个KML文件复制/粘贴到网站中。 或者,您可以使用Dropbox使用公用文件夹托pipeKML文件。 在公共Dropbox文件夹中有一个右键单击上下文菜单,允许您复制该URL。