kml图层谷歌地图限制已更改

kml layers google maps limits changed?

本文关键字:图层 谷歌地图 kml      更新时间:2023-09-26

我的应用程序执行以下操作:

  1. 生成大量标记
  2. 将它们放入kml文件中,每个文件带有20k个标记
  3. 将文件导出到服务器
  4. 将每个文件作为kmllayer打开,并将图层设置为贴图对象

我的问题是:

在API改变之前(一个月前),我可以在同一张地图上显示超过10万个标记,没有任何问题。IE会慢得多,但大部分时间仍然能正确加载点。

现在(我这边没有修改代码)IE甚至不会画一个带有10k标记的单层。铬可以达到约20k,但不会超过这个数字。如果点的数量太大,地图就不会画一个标记。

你们知道限制有什么变化吗?有什么变通办法吗?

代码如下:

<!DOCTYPE html>
<html>
  <head>
    <meta name="viewport" content="initial-scale=1.0, user-scalable=no">
    <meta charset="utf-8">
    <title>KML Layers</title>
    <style>
      html, body, #map-canvas {
        height: 100%;
        margin: 0px;
        padding: 0px
      }
    </style>
    <script src="https://maps.googleapis.com/maps/api/js?v=3.exp"></script>
    <script type="text/javascript" src="htmlConfig.js" ></script>
    <script>
    var map;    
    function initialize()
    {
        var chicago = new google.maps.LatLng(-47.19105,-22.857302);
        var mapOptions =
        {
            zoom: 6,
            center: chicago
                }   
        map = new google.maps.Map(document.getElementById('map-canvas'), mapOptions);
        for(i = 0; i < _files; i++)
        {
            foo = (_url+'/'+(i)+'.kml');
            var ctaLayer = new google.maps.KmlLayer({url: foo});
            ctaLayer.setMap(map);
        }
    }
    google.maps.event.addDomListener(window, 'load', initialize);
    </script>
  </head>
  <body>
    <div id="map-canvas"></div>
  </body>
</html>

url是到服务器的路径,_files是每个名为0.kml、1.kml的文件数,依此类推

KML有限制,在本文档中有描述,主要限制是KML的大小,而不是元素的数量

刚刚在家测试了软件,它正常工作。所以我发现问题出在安装了网络过滤器的IT部门。不知怎的,它扰乱了与公共服务器或谷歌服务器中的kml文件的通信。我想在这种情况下没什么可做的。。。

参考文档中的URL长度限制:

在单个谷歌地图上可以显示的KML层的数量是有限制的。如果超过此限制,则不会显示任何图层。该限制基于传递给KMLLayer类的所有URL的总长度,因此会因应用程序而异;平均来说,你应该能够在不达到极限的情况下装载10到20层。

该限制可能已经基于API的改变而改变。

尝试使用"URL缩短器"(如tinyurl)来缩短KML文件的URL长度。