Im Gegensatz zum Carousel mit GM API funktioniert das Carousel mit der OSM API leider nicht.

Von Jürgen Berkemeier habe ich den Tipp bekommen, die Seite mit dem Parameter autoload=false für den GPXViewer zu starten. Mit JB.GPX2GM.start(); kann der GPXViewer dann auf der Javascript-Console gestartet werden. Wenn man dem Seitenaufruf noch den Parameter debuginfo anhängt, erhält man auf der Javascript-Console zahlreiche Informationen.

Dabei hat sich gezeigt, dass für die erste Karte ein Mapdiv angelegt (318*298) und die Karte angezeigt wird. Bei den drei anderen Karten kommt nur ein graues Feld und die Meldung "... Map map4360: Mapdiv angelegt 0*0 (GPX2GM.js, line 1322)“. Das 0*0 zeigt, das das Kartendiv zu dem Zeitpunkt noch keine Größe hat. Jürgens Vermutung war, dass es sich um ein Timing-Problem handelt. Der GPX-Viewer, der bei „DomContendLoaded“ gestartet wird, findet das Div früher, als ihm die vorgesehene Größe zugewiesen wurde.

Ich habe jetzt noch mal in der Dokumentation von bootstrap nachgesehen und folgenden Lösungsansatz gefunden.

$('#carousel-4720').on('slid.bs.carousel', function () {
  JB.GPX2GM.start();
})

Damit wird GPXViewer nach jedem Wechsel des Carousels neu initialisiert. Das hat allerdings den Nachteil, dass GPXViewer immer ALLE maps neu erstellen will, was natürlich wieder zu Fehlern führt. Ausserdem führt das nach einiger Zeit zu einem Speicherfehler.

Abhilfe wäre vielleicht, GPXViewer immer nur die aktuelle Karte starten zu lassen. Wie bekomme ich das hin?