Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/442.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 我的实时跟踪kml地图使刷新延迟_Javascript_Xml_Google Maps_Kml - Fatal编程技术网

Javascript 我的实时跟踪kml地图使刷新延迟

Javascript 我的实时跟踪kml地图使刷新延迟,javascript,xml,google-maps,kml,Javascript,Xml,Google Maps,Kml,您好,我开发了一个地图,以更新动态kml,使其每10秒刷新一次,但该功能在刷新中产生延迟这是刷新地图的功能,但延迟 var ctaLayer = new google.maps.KmlLayer({ 'preserveViewport': true, url: 'http://190.216.202.35/control/patiosvb.xml?o='+ Math.random()

您好,我开发了一个地图,以更新动态kml,使其每10秒刷新一次,但该功能在刷新中产生延迟这是刷新地图的功能,但延迟

 var ctaLayer = new google.maps.KmlLayer({
                    'preserveViewport': true,
                    url: 'http://190.216.202.35/control/patiosvb.xml?o='+ Math.random()
                });

                ctaLayer.setMap(map);
                ctaLayer.set('preserveViewport', true);




                window.setInterval( function() {
                    reload();
                }, 10000);

                function reload() {
                    ctaLayer.setMap(null);
                    var mctaURL = 'http://190.216.202.35/control/patiosvb.xml?o='+ Math.random()
                    ctaLayer = new google.maps.KmlLayer(mctaURL, {

                    });
                    ctaLayer.setMap(map);
                    ctaLayer.set('preserveViewport', true);
                }


                ctaLayer.setMap(map);
该地图位于

190.216.202.35/control/patiosp.html

tnks的任何帮助,以改善代码,消除滞后

pd:我认为与第三方合作可能会发生这样的事件:“(此偶数)在KML层完成加载时被激发。此时,可以安全地读取status属性以确定层是否成功加载。”

因此,此时您必须删除旧的kml层并添加最新的层

考虑以下示例:

<!DOCTYPE html>    
<html>
    <head>    
        <title>Kml Layer</title>
       <style type="text/css">
            html,  body{height: 100%;margin: 0;padding: 0;}
            #map-container{ height: 100%; width: 100%; min-width:500px; min-height:300px; }
        </style>
        <script src="http://code.jquery.com/jquery-1.10.1.min.js"></script>
        <script src="http://code.jquery.com/jquery-migrate-1.2.1.min.js"></script>
        <script type="text/javascript" src="https://maps.googleapis.com/maps/api/js?v=3.exp&sensor=false"></script>    

    </head>
    <body>
        <div id="map-container"></div>
        <script type="text/javascript"  language="javascript">
            var map;
            $(document).ready(function () {
                var mapOptions = {
                    zoom: 12,
                    center: new google.maps.LatLng(3.4199865, -76.519775),
                    mapTypeId: google.maps.MapTypeId.ROADMAP
                }
                map = new google.maps.Map($("#map-container")[0], mapOptions);

                var ctaLayer = new google.maps.KmlLayer({
                    'preserveViewport': true,
                    url: 'http://190.216.202.35/control/patiosvb.xml?o=' + Math.random()
                });

                ctaLayer.setMap(map);
                ctaLayer.set('preserveViewport', true);

                setInterval(function () {reload(); }, 10000);

                var ctaLayerTmp;

                function reload() {

                    var mctaURL = 'http://190.216.202.35/control/patiosvb.xml?o=' + Math.random()
                    ctaLayerTmp = new google.maps.KmlLayer({
                        url: mctaURL
                    });

                    google.maps.event.addListener(ctaLayerTmp, "status_changed", function() {
                        ctaLayer.setMap(null);
                        ctaLayerTmp.set('preserveViewport', true);
                        ctaLayer = ctaLayerTmp;                     
                    });
                    ctaLayerTmp.setMap(map);
                }
                ctaLayer.setMap(map);
            });

        </script>
    </body>
</html>

Kml层
html,正文{高度:100%;边距:0;填充:0;}
#地图容器{高度:100%;宽度:100%;最小宽度:500px;最小高度:300px;}
var映射;
$(文档).ready(函数(){
变量映射选项={
缩放:12,
中心:新google.maps.LatLng(3.4199865,-76.519775),
mapTypeId:google.maps.mapTypeId.ROADMAP
}
map=new google.maps.map($(“#映射容器”)[0],mapOptions);
var ctaLayer=new google.maps.KmlLayer({
“保存视口”:对,
网址:'http://190.216.202.35/control/patiosvb.xml?o=“+Math.random()
});
ctaLayer.setMap(map);
ctaLayer.set('preserveViewport',true);
setInterval(函数(){reload();},10000);
var-ctaLayerTmp;
函数重载(){
var McTaul=http://190.216.202.35/control/patiosvb.xml?o=“+Math.random()
ctaLayerTmp=new google.maps.KmlLayer({
网址:mctaul
});
google.maps.event.addListener(ctaLayerTmp,“状态更改”,函数(){
ctaLayer.setMap(空);
ctaLayerTmp.set('preserveViewport',true);
ctaLayer=ctaLayerTmp;
});
ctaLayerTmp.setMap(map);
}
ctaLayer.setMap(map);
});

也许在删除旧图层之前先设置新图层?我很好奇,你从哪里获取数据?这是一个交通控制网站,你可以在那里看到是否有交通堵塞?我不认为使用google.maps的第三方图书馆是一个好主意,因为这个家伙(google)已经把所有的东西都放在那里了,这是一个非常简单和最好的长期解决方案,可以自己完成最后的一小步。我没有绿色,黄色,在你的例子中,红色的路线,我想是你在别处加载的另一层。红黄绿是谷歌的交通层。感谢您的回答,您的逻辑是正确的,但您的示例不起作用总线会产生阴影,最终应用程序会崩溃,但使用jquery很有趣我编辑了代码。现在它不让任何阴影。我忘了按实际图层更改临时图层,所以在临时图层加载并绑定到地图后,它在未来的边界中没有被删除。哇,太完美了,谢谢哈哈,但很抱歉滥用了你的信任你知道显示标签的方法吗?