Hallo,
ich hab' ein recht umfangreiches JavaScript, welches mittels der Google Maps API V3 eine (künftig mehrere) Karte(n) erzeugt.
Die Konfiguration ist eine Variable (JSON) die das Script durchläuft und sich dort die Konfiguration und die Standorte rausholt.
Aktuell wird die Variable in einem script-Element ausgegeben:
<script>
var config = // JSON Dinges
</script>
Dort steht dann unter anderem in welchem Element die Karte eigentlich eingefügt werden soll (bzw. welches sie ersetzen soll) - alternativ wird dort aber auch der Fallback-Inhalt ausgegeben, der dann mit der Karte ersetzt wird.
Jetzt soll die Karte mehrfach (mit unterschiedlicher Konfiguration und an unterschiedlichen Stellen im Quelltext) erstellt werden können - das funktioniert theoretisch auch einwandfrei - das Problem ist die Konfiguration selbst.
Erster Ansatz ist, dass ein Array/Objekt dazwischenziehe - also
<script>
var config.id277 = // JSON Dinges
</script>
und an anderer Stelle:
<script>
var config.id123 = // JSON Dinges
</script>
Hier muss[sic?] ich allerdings vorher prüfen, ob config.id277 bereits ein Array/Objekt ist (bzw. umgekehrt, obs undefined ist und falls das der Fall ist, eben ein Array erstellen).
Das führt dazu, dass das halt so aussieht:
if (typeof config == 'undefined') {
var config = new Array();
}
config.id123 = 'foo';
Das config-Array/Objekt kann ich im Anschluss durchlaufen und alle zu erzeugenden Karten abarbeiten.
Die Alternative wäre die JSON-Konfiguration eine "Datenquelle" zu schreiben, die im Dokument steht und "nichts" tut, außer schön auszusehen:
<script data-maps-config="{foo}"></script>
In HTML5 ist das kein Problem, sieht aber etwas komisch aus - funktioniert aber soweit ich das beurteilen kann einwandfrei.
Vorschläge, Anregungen, Wünsche, Beschwerden?