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

Bios
quelle
siehe auch hier gis.stackexchange.com/questions/31409/…
Matthew Lock

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).

CaptDragon
quelle
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!

DaniBaeyens
quelle
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 .

Shivek Parmar
quelle