2013-02-19 5 views
6

Ich habe zwei Divs, eins mit der Weltkarte und eins mit der US-Karte. Wenn die USA auf die Weltkarte geklickt wird, möchte ich dieses div verbergen und die US-Karte in Sicht bringen.Jvectormap sehr klein auf div ändern

Dies funktioniert, aber die Karte ist winzig, obwohl die Position der Zoom-Tasten die Größe des Div angibt, wie es sein sollte.

enter image description here

Irgendwelche Ideen?

Wenn ich beide divs von Anfang an auf "Block" gesetzt habe, haben sie beide die richtige Größe, es ist nur beim Aufruf von Code, um das div zu wechseln, dass es fehlschlägt.

Antwort

9

Dieses Problem wird durch die Tatsache verursacht, dass Sie Karte auf dem ausgeblendeten Element initialisieren, dessen Größe zu diesem Zeitpunkt nicht richtig berechnet werden kann. Versuchen Sie, Ihre Logik so zu ändern, dass jVectorMap initialisiert wird, nachdem das Element sichtbar wird.

+0

Dank, werde ich, dass ein geben gehen –

+0

Danke - das ein Problem gelöst, wo die Karte zu weit nach rechts, bis der Browser verkleinert wurde. Verzögerung der Initialisierung hat es behoben. – Michael

4

Sie können nach dem Anzeigen auch eine Größenänderung() für den Container dieser Karte auslösen.

ich ein Beispiel in diesem Beitrag gemacht: Switch maps in Jvectormap?

+0

Vielen Dank! Das hat funktioniert. – Flov

1

Ich war mit jVectorMap Display Sizing das gleiche Problem hat und einen Weg gefunden, um sie richtig zu bekommen anzuzeigen.

Das Problem ist, wenn Sie Ihr Kartenobjekt erstellen. Damit es ordnungsgemäß angezeigt wird, muss das vectorMap-Objekt beim Erstellen sichtbar sein. Das heißt, wenn Sie sie in Tabs setzen, sollten Sie:

  1. Klicken Sie auf die erste Registerkarte.
  2. Erstellen Sie die erste Karte.
  3. Klicken Sie auf die Registerkarte "Second".
  4. Erstellen Sie die zweite Karte .. ..
    Sie können schließlich klicken Sie auf die erste Registerkarte erneut, so ist es die aktive auf der Seite laden.

Hoffe, das hilft jedem, der das gleiche Problem hat.

4

Sie können Ihrem Code auch Logik hinzufügen, wenn der Container Ihrer Karte erscheint, führt Code eine Methode namens updateSize aus. Insbesondere die wie folgt aussieht:

$('$world-map').vectorMap('get','mapObject').updateSize(); 
1

Das Problem ist, dass der div mit der US-Karte versteckt ist, kann daher nicht die Kartengröße (Breite) korrekt berechnen. Stattdessen können Sie das div, um die Höhe haben: 0.

Ich habe dieses Problem mit Highcharts, das gleiche für jvectormap. Im Folgenden Code, um das Problem (mit Bootstrap) behoben:

/* bootstrap hack: fix content width inside hidden tabs */ 
.tab-content > .tab-pane:not(.active), 
.pill-content > .pill-pane:not(.active) { 
    display: block; 
    height: 0; 
    overflow-y: hidden; 
} 
/* bootstrap hack end */