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

Importing and showing a local KML file using Google Maps API and GeoXML3

本文关键字:显示 KML 文件 导入 Maps Google API GeoXML3 使用      更新时间:2023-09-26

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

我的目的是创建一个动态的KML文件并将其显示在地图上。KML文件是使用GDAL从shapefile成功创建的。我通过将它们导入maps.google.com来检查它们的有效性。我面临的问题是无法使用maps API在本地磁盘上显示KML文件。我不可能把那些KML文件上传到谷歌可以访问的公共服务器上。我在网上搜索,发现geoxml3可以用于这些目的,但我无法处理。由于geoxml3受到相同的跨域下载限制,当我试图解析本地磁盘上的KML文件时,我会收到"拒绝访问"错误。我如何确保我的KML文档与包含的地图页面来自同一个域?我是javascript的新手,所以任何帮助都将不胜感激。

如果有其他方法可以实现我想要做的事情(比如将本地kml文件实时导入谷歌服务器等),请告诉我。提前谢谢。

Ekin Gedik

跨域问题的常见答案(至少在最近的浏览器使用CORS:跨源资源共享之前,我见过但没有尝试过)是在与网页相同的域中使用代理。不过,我不确定如何使用本地文件。

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

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