谷歌地图叠加文件检索和处理

时间:2014-09-25 12:33:51

标签: google-maps dropbox

我在向谷歌地图添加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有关。对此有任何建议将不胜感激。

2 个答案:

答案 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;
&#13;
&#13;

答案 1 :(得分:1)

如果我尝试在Dropbox上下载您的KML,我会收到一个登录对话框,如果我对Google的文件执行相同操作,我会收到该文件。 Google没有您的Dropbox凭据,