我在向谷歌地图添加KML文件时遇到问题。
当myURL设置为' http://gmaps-samples.googlecode.com/svn/trunk/ggeoxml/cta.kml'如下面的代码段所示,map plus overlay按预期显示。叠加文件取自Google共享的示例。
当myURL设置为' https://www.dropbox.com/s/hq09lfaya2cmu87/test.kml'时,Google会返回错误消息,指出该文档无效(返回的状态为INVALID_DOCUMENT),即使每个文件的内容都是不确定的。
// var myURL = 'https://www.dropbox.com/s/hq09lfaya2cmu87/test.kml';
var myURL = 'http://gmaps-samples.googlecode.com/svn/trunk/ggeoxml/cta.kml';
var myLayer = new google.maps.KmlLayer({
url: myURL
});
google.maps.event.addListener(myLayer,'status_changed',function(){
if (myLayer.getStatus() != 'OK') {
alert('Google Maps could not load the layer: ' + myURL + ' Status returned is: ' + myLayer.getStatus());
};
});
myLayer.setMap(map);
我怀疑问题与使用HTTPS有关。对此有任何建议将不胜感激。
答案 0 :(得分:2)
问题是由默认激活的文件下载对话框引起的。通过使用dl参数来抑制文件下载对话解决了问题,例如
var myURL =' https://www.dropbox.com/s/hq09lfaya2cmu87/test.kml?dl=1'
工作片段:
function initialize() {
var myLatlng = new google.maps.LatLng(49.496675, -102.65625);
var mapOptions = {
zoom: 4,
center: myLatlng
}
var map = new google.maps.Map(document.getElementById('map-canvas'), mapOptions);
var myURL = 'https://www.dropbox.com/s/hq09lfaya2cmu87/test.kml?dl=1';
var myLayer = new google.maps.KmlLayer({
url: myURL
});
google.maps.event.addListener(myLayer, 'status_changed', function() {
if (myLayer.getStatus() != 'OK') {
alert('Google Maps could not load the layer: ' + myURL + ' Status returned is: ' + myLayer.getStatus());
};
});
myLayer.setMap(map);
}
google.maps.event.addDomListener(window, 'load', initialize);

html, body, #map-canvas {
height: 100%;
margin: 0px;
padding: 0px
}

<script src="https://maps.googleapis.com/maps/api/js?v=3"></script>
<div id="map-canvas"></div>
&#13;
答案 1 :(得分:1)
如果我尝试在Dropbox上下载您的KML,我会收到一个登录对话框,如果我对Google的文件执行相同操作,我会收到该文件。 Google没有您的Dropbox凭据,