File 使用本地文件(文件API)添加Kmlayer

File 使用本地文件(文件API)添加Kmlayer,file,api,kml,filereader,File,Api,Kml,Filereader,我正在尝试将本地KML文件加载到映射,为此我使用FileReader对象(文件API) 要使用google.maps.KmlLayer,我需要使用readAsDataURL将文件转换为数据URL,问题是KML文件没有加载到地图,并且我没有收到任何错误。我认为Kmlayer中的url属性可能不接受数据url 代码如下: gp.addEventListeners = function(){ $("#file-upload").change(function (evt){ var fi

我正在尝试将本地KML文件加载到映射,为此我使用FileReader对象(文件API)

要使用google.maps.KmlLayer,我需要使用readAsDataURL将文件转换为数据URL,问题是KML文件没有加载到地图,并且我没有收到任何错误。我认为Kmlayer中的url属性可能不接受数据url

代码如下:

gp.addEventListeners = function(){
  $("#file-upload").change(function (evt){
      var file  = evt.target.files[0]; // FileList object
      var reader = new FileReader();

      reader.onloadend = function () {
         var ctaLayer = new google.maps.KmlLayer({
          url: reader.result
        });
        ctaLayer.setMap(gp.map);
      }

      if (file) {
        reader.readAsDataURL(file);
      }     
  });
}
我能做什么?我需要帮助:(


对不起,我说的是英语。

如果您只想用web浏览器打开包含地图查看器并覆盖kml层的html文档,所有文件都存储在本地文件系统中,我会启用localhost

然后你可以使用真实的URL来创建本地文件。如果你在谷歌上搜索“windows 7 localhost”,你可以找到一个视频,展示如何启用windows 7的嵌入式IIS。我有windows 7 home edition,它可以正常工作。

然后,像http://localhost/folder/file.kml这样的地址将指向C:\inetpub\wwwroot\folder\file.kml。您只需适当地放置文件


这就是我所做的,我假设这也是你的情况。我担心,对于这些跨源安全预防问题,xmlhttprequests的这些文件接口可能没有解决办法。

但是为什么确切的代码使用OpenLayers。@Xavigonza他们有不同的理念,你也可以使用脱机分片你也可以使用一些免费的托管服务,比如谷歌硬盘,但这并不容易。