Open Layers: Marker und Popup in Chrome und Opera

Hallo,

in meiner Homepage habe ich eine Karte mit Marker, die beim Anklicken ein Popup mit Text und Link zeigen.
Beides wird aus MySql ausgelesen.
In FF und IE funktioniert alles OK.

In Chrome und Opera erscheint aber leider nur der Link ohne Text. Statt dem Text sieht man nur einen beliebigen Buchstaben.
Kann ich mir nicht erklären und weiß auch nicht was ich tun soll.

Der JS-Code:

<script type="text/javascript">

//<![CDATA[var layer_tah;

var layer_markers;

// Position des Markers - Variablen aus PHP einfügen

var map;
var layer_mapnik;
var album = new Array();
var album = <?php echo json_encode($ID); ?>;
var name = new Array();
var name = <?php echo json_encode($Name); ?>;
var m_lon = new Array();               
var m_lon = <?php echo json_encode($marker_lon); ?>;
var m_lat = new Array();
var m_lat = <?php echo json_encode($marker_lat); ?>;

//Position und Zoomstufe der Karte

var lon = "<?php echo $zone['zlon']; ?>";
var lat = "<?php echo $zone['zlat']; ?>";   
var zoom = "<?php echo $zone['Ausschnitt']; ?>";

function drawmap() {

// Popup und Popuptext mit evtl. Grafik

var popuptext = new Array();
for (var i=0; i<name.length; i++){  
popuptext[i] ='<font color=green size=2em><b>'+name[i]+'</b><br /><a href="albenosm.php?id='+album[i]+'">Album ansehen<a></font>';
}

    OpenLayers.Lang.setCode('de');
   
    map = new OpenLayers.Map('map', {
        projection: new OpenLayers.Projection("EPSG:900913"),
        displayProjection: new OpenLayers.Projection("EPSG:4326"),
        controls: [
            new OpenLayers.Control.Navigation(),
            new OpenLayers.Control.PanZoomBar()],
        maxExtent:
            new OpenLayers.Bounds(-20037508.34,-20037508.34,
                                   20037508.34, 20037508.34),
        numZoomLevels: 18,
        maxResolution: 156543,
        units: 'meters'
    });

    layer_mapnik = new OpenLayers.Layer.OSM.Mapnik("Mapnik");
    layer_markers = new OpenLayers.Layer.Markers("Address", { projection: new OpenLayers.Projection("EPSG:4326"), 
    	                                          visibility: true, displayInLayerSwitcher: false });
    // Karte Zentrieren und Zomm-Stufe

    map.addLayers([layer_mapnik, layer_markers]);
    jumpTo(lon, +lat, zoom);
    
    // Position des Markers 
   
    for (var i=0; i<m_lon.length; i++ ){      
    addMarker(layer_markers, m_lon[i], +m_lat[i], popuptext[i]);    
    }     
}
//]]>
    </script>        

Das Ganze ist zu sehen unter: http://cz-prag.de/themaosm.php?id=3

Weiß vielleicht jemand, was die Ursache sein könnte?

Gruß
Hardy

OT: Hat nichts mit deinem Problem zu tun, aber drück mal im FF [Strg]+ und sieh dir die roten Stellen an :wink:

Ich weiß nicht woran es liegt, aber hatte ich auch schon bei anderen Websites, wenn www. fehlt macht Chrome nichts.
Wenn ich www. davor setze funktioniert es:

EDIT: Hast doch recht - Marker werden nur mit Buchstaben und Link angezeigt:

Nur mal so als Schuß ins Blaue: Nimm doch mal was anderes als “name” als globale Variable… Der Debugger von Chrome sagt mir nämlich, dass “name” kein Array ist (“album”, “m_lat” z.B. hält er schon dafür). Und weil ich weiss, dass Chrome recht zickig auf Variablennamen reagiert, die schon als DOM-Elemente existieren und “name” so ziemlich überall vorkommt…

Zu den Buchstaben: Das ist Dein Array “name” als String gelesen - Index der einzelnen Buchstaben. maxbe hat ansonsten Recht, nimmste einen anderen Variablennamen ist das Problem gelöst.

Hallo,

vielen Dank an alle für die schnelle Antworten.

maxbe Du hast recht. Habe andere Bezeichnung als ‘name’ genommen und es funktioniert!

rayquaza - rote Stellen? Zeile 321 ist mir unklar da in 284 der div-Anfang ist und alle anderen div’s abgeschlossen sind.
Zeile 327 u. 238 ist nur der auskommentierte footer, kann ich auch ganz löschen.
Was sind Deine Bedenken?

ich nehme mal an, das seine Bedenken die Bedenken vom FF sind. :wink:

Gruss
walter

Zeile 149: Da fehlt ein mindestens Leerzeichen.
Zeile 320: Ich vermute dass das daran liegt, dass die Definitionsliste darüber (die btw etwas seltsam aussieht) nicht geschlossen ist.
Der Kommentar wird eventuell markiert, weil innerhalb davon ein weiterer Kommentar geöffnet wird. Sollte eigentlich egal sein, aber um nichts ernsthafteres zu übersehen könntest du den Kommentar da kurz schliessen.

Auf osm.org findet sich übrigens auch irgendwo ein “” obwohl auf der Seite keine Tabelle ist :roll_eyes:

@wambacher: Meine Bedenken sind, dass Webbrowser viel zu viel Müll akzeptieren (müssen) und sich Entwickler daran gewöhnen könnten. Dabei ist es auch mit PHP möglich, eingerückten HTML-Code zu generieren :wink:

Danke Euch,

mein Quelltext ist jetzt ohne rote Stellen!

Gruß
Hardy