Rainer: Variable aus XML übernehmen (GoogleMap)

Hallo,

meine XML Datei:
<?xml version="1.0" encoding="utf-8"?>
<markers>
<marker lat="48.275293" lng="8.85432" text="TSG 1848 Balingen" bild="baseIcon" />
<marker lat="48.223111" lng="10.108097" text="SpVgg 1928 Au/Iller" bild="baseIcon2" />
</markers>

Der Ausschnitt aus dem Code:
// EIGENE MARKER
        var baseIcon = new GIcon();
        baseIcon.image = "GMap/green.gif";
        baseIcon.iconSize = new GSize(10, 10);
 baseIcon.iconAnchor = new GPoint(3, 8);

var baseIcon2 = new GIcon();
        baseIcon2.image = "GMap/red.gif";
        baseIcon2.iconSize = new GSize(10, 10);
 baseIcon2.iconAnchor = new GPoint(3, 8);
//.......
for (var i = 0; i < markers.length; i++) {
var latlng = new GLatLng(parseFloat(markers[i].getAttribute("lat")),
                         parseFloat(markers[i].getAttribute("lng")));
var text = markers[i].getAttribute("text");
var bild = markers[i].getAttribute("bild");

map.addOverlay(new GMarker(latlng, {icon:+"bild"}));
}

Ich lese die Daten aus der XML ein. Die Marker sind richtig positioniert. in "var bild" müsste nun baseIcon oder baseIcon2 stehen - aber es wird nicht das richtige Icon angezeigt, nur das Standardicon von Google. Ich vermute das die Schreibweise {icon:+"bild"} falsch ist. Gebe ich den icon direkt an ({icon:baseIcon} funktioniert es.
Wie muss es denn richtig geschrieben sein das "var bild" in {icon:??bild??} übernommen wird?

Gruß Rainer

  1. Hallo,

    Wie muss es denn richtig geschrieben sein das "var bild" in {icon:??bild??} übernommen wird?

    Vermutlich
    { icon : bild }

    Das erzeugt ein Objekt mit einer Eigenschaft namens icon, diese hat einen Wert, der der Variable bild entnommen wird.

    Mathias

    1. Hallo Matthias,

      leider falsch vermutet. Hatte ich auch schon prbiert.

      Gruß Rainer

      1. Hallo,

        leider falsch vermutet. Hatte ich auch schon prbiert.

        Dann sind deine Anforderungen andere, als ich annahm.
        In der Variable bild steht entweder der String "baseIcon" oder der String "baseIcon2"? Und in der Icon-Eigenschaft soll letztlich der Wert der gleichnamigen Variablen stehen, also eines der beiden GIcon-Objekte?
        Dann ist deine Frage eher, wie du von einem String mit einem Variablenname zum Wert dieser Variable kommst.

        Dann solltest du baseIcon und baseIcon2 entweder an einem Objekt speichern, dann kannst du folgendes schreiben:

        var marker = {};
        marker.baseIcon = new GIcon();
        ...
        marker.baseIcon2 = new GIcon();
        ...

        var markerName = "baseIcon"; // oder halt baseIcon2 - analog zu deiner Variable bild
        alert( "GIcon mit dem Namen " + markerName + ":\n" + marker[markerName] );

        Also dann { icon : marker[markerName] }

        Oder du arbeitest mit eval():

        { icon : eval(markerName) }

        Dazu muss es sich um eine lokale Variable (in derselben Funktion) oder um eine globale Variable handeln. (Im letzteren Fall könnte man aber einfach window[markerName] schreiben, nach dem obigen Schema.)

        Mathias

        1. Hallo Mathias,

          eval war das Stichwort. Es ist ja ein String der aus der XML kommt ;-)

          {icon : eval(bild)} funktioniert dann ohne weiteren zusätzlichen Code.

          Gruß Rainer

  2. Wie muss es denn richtig geschrieben sein das "var bild" in {icon:??bild??} übernommen wird?

    Ist denn in "bild" überhaupt der richtige Wert?

    Struppi.

    1. Hallo Struppi,
      muss ja wohl so sein

      XML:
      <marker lat="48.275293" lng="8.85432" text="TSG 1848 Balingen" bild="baseIcon" />

      JS:
      var bild = markers[i].getAttribute("bild");

      Oder was meinst du damit?

      Gruß Rainer

      1. muss ja wohl so sein

        XML:
        <marker lat="48.275293" lng="8.85432" text="TSG 1848 Balingen" bild="baseIcon" />

        JS:
        var bild = markers[i].getAttribute("bild");

        Oder was meinst du damit?

        Welchen Wert hat bild?

        Struppi.