1

由于某种原因,我无法让 geoxml3 加载我的 KML 文件。我尝试使用该文件的公开 URL,以及在 Chrome、Safari 和 Firefox 中对该文件的本地引用,但均无效。当我使用 Chrome 时,我收到一条控制台消息,上面写着

无法检索文件。

我的代码很简单:

function initialize() {
var infowindow = new google.maps.InfoWindow({size: new google.maps.Size(150,50) });
var map_canvas = document.getElementById('map_canvas');
var center = new google.maps.LatLng(53, -88);
var map_options = {
  center: center,
  zoom: 4,
  mapTypeId: google.maps.MapTypeId.TERRAIN
};

var map = new google.maps.Map(map_canvas, map_options);

var myParser = new geoXML3.parser({map: map, singleInfoWindow: true});
myParser.parse('https://sites.google.com/site/.../home/kml-files/ontario_regions_yan_1.kml');
}

我已经尝试了其他问题中提供的所有各种解决方案,但无法加载文件!我缺少一些简单的东西吗?

4

2 回答 2

4

事实证明,不幸的是我没有正确版本的 geoxml3.js。我从polys 分支下载了文件,一切正常。

于 2014-02-07T11:09:53.253 回答
3

geoxml3 使用 xmlHttpRequest 检索 KML,xmlHttpRequest 具有相同的域限制。KML 需要与加载它的页面位于同一域中,或者通过与加载它的页面位于同一域中的代理加载。

SO 问题 - xmlHttpRequest 和跨站点限制

通过代理在 geocodezip.com 上的 KML

KmlLayer 没有这个限制(谷歌服务器直接加载 KML)

域需要相同。相对 URL 确保了这一点。试图从http://geocodezip.com一个页面上加载一些东西是http://www.geocodezip.com行不通的:

geocodezip.com并且www.geocodezip.com是不同的域(无论它们看起来多么相似)。相对路径是相对于提供页面的位置(不是 geoxml3.js 脚本)

于 2014-02-05T17:56:43.157 回答