Door
Ruud van der Woude
op 03-02-2011 09:10
gewijzigd op 03-02-2011 09:11
2.102 views
Ik ben bezig om google maps op de een website te krijgen. Ik heb dit inmiddels al voor elkaar. Het is de bedoeling dat een bezoeker zijn postcode en land ingeeft. Google Maps zorgt er dan voor dat de uitvoer op de kaart wordt vertoond. Dit gebeurt aan de hand van een xml file.
De eerste keer gaat het goed en worden de resultaten goed vertoond. Zodra er een nieuwe aanvraag wordt gedaan krijg ik hetzelfde resultaat. Alleen met een ander centerpoint in google maps. Het probleem zit alleen in internet explorer, Firefox doet het goed daar zie ik geen probleem.
Wie heeft al eens gehad en kan me helpen dat de xml file wordt overschreven in IE.
Waarschijnlijk haalt IE die xml uit de cache, aangezien je de zelfde url aanroept.
Wat je kan doen, is een dummy GET variabele toevoegen die telkens een andere waarde heeft.
Dan is dus de url verschillend van de vorige waardoor niet in de cache wordt gezocht.
Zet ergens een javascript variable globaal.
Bij het aanroepen doe je dan bv. zo-iets:
...
var globale_var = 0;
...
var url = "files/mijn_xml.xml?dummy="+ globale_var++;
...
// aanroepen xml file
Zie eens of dat werkt.
Deze oplossing kan trouwens dienen voor andere Ajax requests / images die je per se niet in de cache wil zoeken, ...
function initialize() {
if (GBrowserIsCompatible()) {
var map = new GMap2(document.getElementById("map_canvas"));
map.setCenter(new GLatLng({/literal}{$aDLCenterGoogle.lat}, {$aDLCenterGoogle.lon}{literal}), 9);
map.setUIToDefault();
function createMarker(point, number, html) {
var marker1 = new GMarker(point);
var message = ["This","is","the","secret","message"];
marker1.value = number;
GEvent.addListener(marker1, "click", function() {
var myHtml = html;
map.openInfoWindowHtml(point, myHtml);
});
return marker1;
}
var globale_var = 0;
var url = "data.xml?dummy="+ globale_var++;
GDownloadUrl(url, function(data, responseCode){
var xml = GXml.parse(data);
var markers = xml.documentElement.getElementsByTagName("marker");
for (var i = 0; i < markers.length; i++) {
var latlng = new GLatLng(parseFloat(markers[i].getAttribute("lat")),
parseFloat(markers[i].getAttribute("lng")));
var html = markers[i].getAttribute("html");
map.addOverlay(createMarker(latlng, i + 1, html));
}
});
}
}
[size=xsmall]Toevoeging op 03/02/2011 10:42:24:[/size]
Naar aanleiding van Kris zijn optie heb ik een oplossing gevonden. in plaats van een tellertje te maken heb ik de timestamp van javascript gebruikt. Door de verversing van de pagina bleef de teller altijd op nul staan. Een timestamp doet dat niet.
var time = new Date();
var url = "data.xml?"+time;
GDownloadUrl(url, function(data, responseCode){