使用Google Maps API和GeoXML3导入和显示本地KML文件

时间:2012-07-11 13:20:01

标签: c# javascript google-maps kml

我正在尝试使用嵌入了Google Maps API的C#编写桌面应用程序。为此,我在应用程序中嵌入了一个Web浏览器并使用Maps API。我可以在应用程序中使用Maps API的基本功能。

我的目的是动态创建一个KML文件并在地图上显示。使用GDAL从shapefile成功创建KML文件。我通过将它们导入maps.google.com来检查其有效性。我遇到的问题是无法使用Maps API在本地磁盘上显示KML文件。我无法将这些KML文件上传到Google可以访问的公共服务器。我在网上搜索,发现geoxml3可以用于那些目的,但我无法处理它。由于Geoxml3受到相同的跨域下载限制,因此当我尝试解析本地磁盘上的KML文件时,出现“拒绝访问”错误。我怎样才能确保我的KML文档与包含的地图页面在同一个域中提供?我对javascript很新,所以任何帮助都会受到赞赏。

如果还有另一种方法可以实现我想要做的事情(比如将本地kml文件直接导入Google服务器等),请告诉我们。提前谢谢。

Ekin Gedik

1 个答案:

答案 0 :(得分:0)

跨域问题的常见答案(至少在最近使用CORS的浏览器之前:Cross-Origin Resource Sharing,我已经看到但未经过实验),是在与网页相同的域中使用代理。我不知道如何使用本地文件。

您应该能够从本地计算机上运行的应用程序访问本地文件,但我不确定这是否符合除开发之外的使用条款。

另一种选择是将kml作为字符串传递给geoxml3并使用parseKmlString方法。这样可以避免使用xmlHttpRequest。