2009-12-09 6 views
2

J'ai réussi à charger la carte cross-browser mais quand il s'agit de la remplir avec des marqueurs, cela ne fonctionne pas dans IE7 (les marqueurs ne sont pas affichés). Tout va bien dans Firefox.Les marqueurs Google Maps ne sont pas affichés dans IE7

Les emplacements sont stockées au format XML qui est ensuite analysés par javascript et les marqueurs sont ajoutés.

structure XML:

<?xml version='1.0' standalone='yes'?>  
<stores> 
    <store> 
    <lat>47.00565</lat> <!-- Note: fake values here --> 
    <lng>26.25879</lng> 
    </store> 
</stores> 

code jQuery:

var loadMarkers = function(xml){ 
    var $allstores = $(xml).find("store"); 
    for($i=0; $i<$allstores.length; $i++){ 
    var $store = $allstores.eq($i); 
    var marker= new GMarker(new GLatLng($store.find("lat").text(),$store.find("lng").text())); 
    MaCarte.addOverlay(marker); 
    } 
} 

Il peut être utile de savoir qu'il ya plus de 300 magasins dans le fichier XML.

Avez-vous déjà eu un problème?

MISE À JOUR:

Le problème semble être sur l'analyse syntaxique XML. En effet, si j'alerter le nombre de magasins sont retournés comme ceci:

alert($allmagasins.length); 

je reçois « 0 » sur IE et « 252 » sur Firefox. Est-ce que jQuery ne traite pas correctement XML dans IE?

+0

-t-il fonctionne correctement lorsque vous mettez coords statique au lieu de 'store.find de $ ("lat") texte()'.? – hsz

+0

Cela ne fonctionne toujours pas. –

+0

Pouvez-vous montrer comment vous chargez le XML avant d'appeler loadMarkers? –

Répondre

2

OK, j'ai trouvé la solution.

Lorsque vous traitez avec IE et l'analyse syntaxique XML avec jQuery, des choses doit être fait pour le faire fonctionner.

Voici mon code jQuery travail mise à jour:

var loadMarkers = function(xml){ 

    if($.browser.msie){ 
    var data = xml; 
    xml = new ActiveXObject('Microsoft.XMLDOM'); 
    xml.async = false; 
    xml.loadXML(data); 
    } 

    var $allstores = $(xml).find("store"); 
    for($i=0; $i<$allstores.length; $i++){ 
    var $store = $allstores.eq($i); 
    var marker= new GMarker(new GLatLng($store.find("lat").text(),$store.find("lng").text())); 
    MaCarte.addOverlay(marker); 
    } 
} 
Questions connexes