Here is an example on: How to Refresh / Reload a KML layer in OpenLayers. Dynamic KML Layer. See my answer below.
TLDR See my answer below on how to refresh the layer.
Here is an example on: How to Refresh / Reload a KML layer in OpenLayers. Dynamic KML Layer. See my answer below.
TLDR See my answer below on how to refresh the layer.
Figured seen as it was hard enough for me to find information on this I would add this:
1)
Create the KML Layer:
//Defiine your KML layer//
var MyKmlLayer= new OpenLayers.Layer.Vector("This Is My KML Layer", {
//Set your projection and strategies//
projection: new OpenLayers.Projection("EPSG:4326"),
strategies: [new OpenLayers.Strategy.Fixed()],
//set the protocol with a url//
protocol: new OpenLayers.Protocol.HTTP({
//set the url to your variable//
url: mykmlurl,
//format this layer as KML//
format: new OpenLayers.Format.KML({
//maxDepth is how deep it will follow network links//
maxDepth: 1,
//extract styles from the KML Layer//
extractStyles: true,
//extract attributes from the KML Layer//
extractAttributes: true
})
})
});
2)
Set the URL for the KML Layer:
//note that I have host equal to location// //Math.Random will stop caching//
var mykmlurl = 'http://' + host + '/KML?key=' + Math.random();
3)
Set the interval in which to refresh your layer:
//function called// //timer// //layer to refresh//
window.setInterval(UpdateKmlLayer, 5000, MyKmlLayer);
4)
The function to update the layer:
function UpdateKmlLayer(layer) {
//setting loaded to false unloads the layer//
layer.loaded = false;
//setting visibility to true forces a reload of the layer//
layer.setVisibility(true);
//the refresh will force it to get the new KML data//
layer.refresh({ force: true, params: { 'key': Math.random()} });
//- <3 from Thqr -//
}
Hopes this makes it easier for some others out there.
this code is not working... pois is kmllayer object, but it s not working :( and there is no error
function busAnim() {
for(counter=0; counter<<?=$ii?>+1; counter++) {
pois.loaded = false;
pois.setVisibility(true);
pois.refresh({ force: true, params: { 'key': Math.random() } });
document.getElementById("debugger1").value=parseInt(document.getElementById("debugger1").value)+1;
alert("<?php print $x_startdatetime."<<"; ?> " + counter);
usleep(2000000);
//alert(counter);
}
}
function usleep(microseconds) {
var start = new Date().getTime();
while (new Date() < (start + microseconds/1000));
return true;
}
<a href="javascript:busAnim();">Run</a>