Messages: 57

Enregistré le: 7 Fév 2007

Message le Mer Nov 05, 2008 12:53

Bon ben aprés avoir épluché le forum au sujet d'IE concernant l'affichage des markers, je suis bien obligé de constater que rien ne fonctionne!

Alors voilà mon bout de code... si celà peut aider à trouver un début de solution!
A noter que IE trouve bien le fichier qui génère le XML... et me l'affiche..... mais prout, pas de markers alors que sous FF... pas de problème comme tous le monde! :evil:

Page principale où l'on affiche la carte:
Code: Tout sélectionner
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head>   
<meta http-equiv="content-type" content="text/html; charset=utf-8"/>   
 <title>Google Maps AJAX + MySQL/PHP Example</title>   
 <script src="http://maps.google.com/maps?file=api&v=2&key=<?php echo"$cle";?> "            type="text/javascript">
 </script>   
 <script type="text/javascript">
    //<![CDATA[   
   
   
    //alert('<?php echo"$cle";?>');
    var iconBlue = new GIcon();     
    iconBlue.image = 'http://labs.google.com/ridefinder/images/mm_20_blue.png';   
    iconBlue.shadow = 'http://labs.google.com/ridefinder/images/mm_20_shadow.png';   
    iconBlue.iconSize = new GSize(12, 20);   
    iconBlue.shadowSize = new GSize(22, 20);   
    iconBlue.iconAnchor = new GPoint(6, 20);   
    iconBlue.infoWindowAnchor = new GPoint(5, 1);   
   
    var iconRed = new GIcon();     
    iconRed.image = 'http://labs.google.com/ridefinder/images/mm_20_red.png';   
    iconRed.shadow = 'http://labs.google.com/ridefinder/images/mm_20_shadow.png';   
    iconRed.iconSize = new GSize(12, 20);   
    iconRed.shadowSize = new GSize(22, 20);   
    iconRed.iconAnchor = new GPoint(6, 20);   
    iconRed.infoWindowAnchor = new GPoint(5, 1);   
   
    var customIcons = [];   
    customIcons["Possesseur"] = iconBlue;   
    customIcons["Mecanicien"] = iconRed;   
      customIcons["Magasin"] = iconRed;     
   
   
    function load() {     
    if (GBrowserIsCompatible()) {       
    var map = new GMap2(document.getElementById("map"));       
    map.addControl(new GSmallMapControl());       
    map.addControl(new GMapTypeControl());       
    map.setCenter(new GLatLng(<?php echo"$lat1";?>,<?php echo"$lng1";?>), 9);   
   
   
   
    GDownloadUrl("modules/Carte2/generexml.php",
    function(data) {         
    var xml = GXml.parse(data);   
    alert(data);       
    var markers = xml.documentElement.getElementsByTagName("marker");         
    for (var i = 0; i < markers.length; i++) {           
    var name = markers[i].getAttribute("name");           
    var address = markers[i].getAttribute("address");           
    var type = markers[i].getAttribute("type");           
    var point = new GLatLng(parseFloat(markers[i].getAttribute("lat")),                                   
    parseFloat(markers[i].getAttribute("lng")));           
    var marker = createMarker(point, name, address, type);           
     map.addOverlay(marker);          }        });      }    }   
     
     function createMarker(point, name, address, type) {     
     var marker = new GMarker(point, customIcons[type]);     
     var html = "<b>" + name + "</b> <br/>"+type+"<br>"+address;     
     
     GEvent.addListener(marker, 'click', function() {       
     marker.openInfoWindowHtml(html);      });     
     return marker;    }   
     //]]>
      </script>  </head>  <body onload="load()" onunload="GUnload()">    <div id="map" style="width: 600px; height: 600px"></div>  </body></html>



et le fichier qui génère le xml

Code: Tout sélectionner



function parseToXML($htmlStr) {
$xmlStr=str_replace('<','&lt;',$htmlStr);
$xmlStr=str_replace('>','&gt;',$xmlStr);
$xmlStr=str_replace('"','&quot;',$xmlStr);
$xmlStr=str_replace("'",''',$xmlStr);
$xmlStr=str_replace("&",'&amp;',$xmlStr);
return $xmlStr; }



header("Content-Type:text/xml;charset=UTF-8");
echo '<markers>';

while ($row = @mysql_fetch_assoc($result1)){
if($row[lat]!=0.000000){
echo '<marker ';
echo 'name="' . parseToXML($row['username']) . '" '; 
echo 'address="' . parseToXML($row['address']) . '" '; 
echo 'lat="' . $row['lat'] . '" '; 
echo 'lng="' . $row['lng'] . '" '; 
echo 'type="' . $row['type'] . '" ';

echo '/>';

}}


echo '</markers>';


Voilà... moi j'y perd mon latin.... je me suis dit que mon problème d'accents dans le fichier généré xml pouvait être la source du problème pour IE mais niet, même en faisant appel à un fichier statique propre, rien n'y fait!
Haut
2 Réponses
Messages: 57

Enregistré le: 7 Fév 2007

Message le Mer Nov 05, 2008 14:16

Au passage, IE me signale que documentelement a la valeur Null ou n'est pas un objet......

8O
Haut
Messages: 57

Enregistré le: 7 Fév 2007

Message le Mer Nov 05, 2008 16:15

Ca y est..... j'ai trouvé! Alors avis aux amateurs!

J'ai remplacé dans le fichier qui génère le XML
Code: Tout sélectionner
header("Content-Type:text/xml;charset=UTF-8");


par

Code: Tout sélectionner
header("Content-type: text/plain; charset=iso-8859-1\n");


Du coup, le fichier généré est propre.... plus de problème d'accents etc.... et IE arrive de comprendre..... :D
Haut