谷歌将KmlLayer映射出来并且InfoWindow没有显示

时间:2012-06-19 11:28:37

标签: google-maps-api-3 kml

我在网站中嵌入了谷歌地图,使用KmlLayer在https://www.getstable.org/who-can-help/therapist-map-kml加载kml文件。有时地图不会加载,我认为因为谷歌地图有一个严格的超时,并且地图上的一些引脚通常不可点击,但有些没有明确的原因。有谁知道kmlLayer的超时限制是什么以及如何增加它?也有任何理由为什么有些引脚不可点击(即当你点击一个引脚并且光标没有变成一只手时没有出现InfoWindow)?

以下是显示它的代码(某些字段是模板化的):

    <div id="map_canvas" style="width: 856px;height: 540px;">Loading...</div> 
    <script type="text/javascript" src="{protocol}://maps.google.com/maps/api/js?sensor=false"></script>

        <script type="text/javascript">
            var the_map = {
                options : { 
                        zoom:{embed:zoom_level},
                        center:new google.maps.LatLng({embed:latitude},{embed:longitude}),
                        mapTypeId: google.maps.MapTypeId.ROADMAP
                },  
                geocoder : null,
                map : null,
                init : function() {
                    this.geocoder = new google.maps.Geocoder();

                      $('#map_canvas').delegate('a', 'click', function(event) {
                        window.location.href=$(this).attr('href');
                        return false;
                      });
                },                  
                load_map : function() {
                    this.map = new google.maps.Map(document.getElementById("map_canvas"), this.options);

                        query = encodeURI('{site_url}{embed:map_url}');                     
                  var ctaLayer = new google.maps.KmlLayer(query,{
                      preserveViewport:true
                  });
                  ctaLayer.setMap(this.map);      
                }
            }
            $(document).ready(function() {
                the_map.init();
                the_map.load_map();
            });
        </script>

1 个答案:

答案 0 :(得分:4)

Google服务器有一个未指定的超时,但测试显示它是3-5秒。此超时不是您可以影响的。解决方案是让您的服务器响应更快。这个问题几乎总是归结为一个太大的文件(你的不是)或动态生成KML。您需要对此进行优化,这可能意味着要找到一种方法来创建静态KML文件。

不可点击的功能几乎肯定是您的KML的问题。您可以验证您的KML以检查:

您还可以通过maps.google.com加载KML来测试KML。