【问题标题】:Google Maps API V3 KML layer does not show upGoogle Maps API V3 KML 图层不显示
【发布时间】:2013-06-27 10:43:05
【问题描述】:

我在网上学习了许多教程,但未能成功尝试在我的网站上获得一个带有所需 KML 叠加层的谷歌地图窗口。我的代码如下:

<!DOCTYPE html>
<html>
<head>
<script src="https://maps.googleapis.com/maps/api/js?v=3.exp&sensor=false">
</script>

<script>
function initialize()
{
var mapOptions = {
    center: new google.maps.LatLng(38,-79.5),
    zoom:3,
    mapTypeId: google.maps.MapTypeId.TERRAIN
 }
var map=new google.maps.Map(document.getElementById("googleMap"),mapOptions);
var overlay = new google.maps.KmlLayer('https://doc-08-4g-       docs.googleusercontent.com/docs/securesc/ckoh7mm1pf9l58sknv61gkpp19v37j15/r3rh37mucb8nscl1r37disrlcom7i93t/1372536000000/00236509183910004089/00236509183910004089/0B-qVNYv_qM5vNy1ZbzJYVUgtTjA?h=16653014193614665626&e=download');

overlay.setMap(map);
}
</script>
</head>
<body>
<div id="googleMap"></div>
</body>
</html>

我不明白脚本 src 以及为什么需要它,但我在教程中找到了它,所以我将它包含在内。截至目前,我的 KMZ 而不是 KML 文件位于对公众开放的谷歌驱动器中,我使用了下载链接。即使我使用互联网示例中的 KML 文件,这也不起作用。我错过了什么吗?请帮忙!!

【问题讨论】:

  • 我无法打开文件(即使我从 URL 中删除了空格)......所以它似乎无法公开访问。但是,当您想查看任何内容时,#googleMap 需要一个高度。

标签: php google-maps-api-3 overlay kml kmz


【解决方案1】:

我看到了 3 个问题:

  1. 从不调用初始化函数
  2. 地图没有大小
  3. KML 无效(返回状态 INVALID_DOCUMENT)

    <!DOCTYPE html>
    <html>
    <head>
    <script src="https://maps.googleapis.com/maps/api/js?v=3.exp&sensor=false">
    </script>
    
    <script>
    function initialize()
    {
    var mapOptions = {
        center: new google.maps.LatLng(38,-79.5),
        zoom:3,
        mapTypeId: google.maps.MapTypeId.TERRAIN
     }
    var map=new google.maps.Map(document.getElementById("googleMap"),mapOptions);
    var overlay = new google.maps.KmlLayer('https://doc-08-4g-docs.googleusercontent.com/docs/securesc/ckoh7mm1pf9l58sknv61gkpp19v37j15/r3rh37mucb8nscl1r37disrlcom7i93t/1372536000000/00236509183910004089/00236509183910004089/0B-qVNYv_qM5vNy1ZbzJYVUgtTjA?h=16653014193614665626&e=download');
    
    overlay.setMap(map);
    google.maps.event.addListener(overlay,'status_changed',function(){
      document.getElementById('status').innerHTML = overlay.getStatus();
    });
      }
    google.maps.event.addDomListener(window,'load', initialize);
    </script>
    </head>
    <body>
    <div id="googleMap" style="height:500px;width:600px;"></div>
    <div id="status"></div>
    </body>
    </html>
    

【讨论】:

  • 感谢您提供代码。我试图在我的 Google 云端硬盘上保存 KML 文件并已将其公开。您知道如何设置吗?或者 Dropbox 会是更好的选择吗?或者甚至将地图放在网站本身的另一部分?
  • @Ravin 看起来,目前,您可以在 Google Drive 中转到您的 KML,单击“文件 -> 嵌入”,然后您将获得带有适合 KmlLayer 嵌入的 url 的 javascript 行,例如var layer = new google.maps.KmlLayer({driveFileId: "0B2u_mC9PEAxyZDk1NjI4YjgtMzA5NC00ZDg3LTg3YzQtYTU5YTZmNjcyNTM1" });,它与该给定文件的所有类型的 GDrive URL 中出现的哈希码相同。
【解决方案2】:

google maps javascript API,KML 层,将 KML 大小限制为 10MB。 超过 10MB,您将在 kmllayer 对象上获得无效的文档状态。

您的 KML 必须先加载到 google KML 服务,然后再将平铺图像返回给您。 因此,您的 KML 大小必须小于 10MB。

https://developers.google.com/maps/documentation/javascript/kmllayer#restrictions

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-02-20
    • 2013-06-28
    • 1970-01-01
    • 1970-01-01
    • 2020-12-01
    • 2012-05-23
    • 2012-07-17
    相关资源
    最近更新 更多