Variable aus XML übernehmen (GoogleMap)
Rainer
- javascript
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
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
Hallo Matthias,
leider falsch vermutet. Hatte ich auch schon prbiert.
Gruß Rainer
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
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
Wie muss es denn richtig geschrieben sein das "var bild" in {icon:??bild??} übernommen wird?
Ist denn in "bild" überhaupt der richtige Wert?
Struppi.
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
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.