Wie kann ich eine Karte auf Leinwand neu zeichnen / aktualisieren?


9

Ich habe eine Webseite erstellt, die eine Schaltfläche zum Einstellen der Karte im Vollbildmodus und zurück in ihre normale Form enthält. Die Problemkarte wird erst im Vollbildmodus angezeigt, wenn ich die Größe des Ausgabefensters verändere.

Jede Anleitung und Hilfe wird geschätzt.

Hier ist das Arbeitsbeispiel: Demo


Antworten:


13

Am map.updateSize();Ende von hinzufügen$("#btn-full-screen").click...

DEMO

updateSize-Dokumentation

Diese Funktion sollte von jedem externen Code aufgerufen werden, der die Größe des Map-Div dynamisch ändert (da Mozilla nicht zulässt, dass die "Onresize" für ein Element erfasst wird).


5

Sie können die OpenLayers.Map.updateSizeMethode verwenden, um Ihre Basisebene neu zu zeichnen, wenn Sie die Karte maximieren.

Fügen Sie also eine Funktion hinzu wie:

var fullScreen = function () {
    map.baseLayer().redraw();
}

Sie müssten Ihrer Karte nur eine zusätzliche Option hinzufügen:

var map = new OpenLayers.Map({
    div: "map",
    center: new OpenLayers.LonLat(0, 0),
    updateSize: fullScreen,
    minResolution: "auto",
    minExtent: new OpenLayers.Bounds(-1, -1, 1, 1),
    maxResolution: "auto",
    maxExtent: new OpenLayers.Bounds(-180, -90, 180, 90),
    projection: Mercator,
    displayProjection: Geographic
});

Viel Glück!


Die Karte wird nicht auf Vollbild gesetzt. Können Sie bitte die Geige aktualisieren?
BIOS

Vielen Dank. Ich hatte Fliesen, die beim Zoomen mit weiß wurden transitionEffect: 'resize'. map.baseLayer().redraw();behoben.
Nicolas Boisteault

0

Schreiben Sie den folgenden Code, wenn Sie die Karte neu zeichnen müssen, z. B. beim Ändern der Fenstergröße oder beim Ändern der Registerkarten oder im Vollbildmodus oder bei einem anderen Ereignis, je nach Bedarf.

$(window).trigger('resize');

Dadurch wird die updateSize()Funktion automatisch intern ausgelöst .

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.