Javascript 我的实时跟踪kml地图使刷新延迟
您好,我开发了一个地图,以更新动态kml,使其每10秒刷新一次,但该功能在刷新中产生延迟这是刷新地图的功能,但延迟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()
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很有趣我编辑了代码。现在它不让任何阴影。我忘了按实际图层更改临时图层,所以在临时图层加载并绑定到地图后,它在未来的边界中没有被删除。哇,太完美了,谢谢哈哈,但很抱歉滥用了你的信任你知道显示标签的方法吗?