Ich habe eine Mapbox Karte auf einer Seite, die in ein gleitendes Panel lädt, die von jQuery gesteuert wird.Call Mapbox GL Funktion von jQuery
Wenn ich die Größe des Browserfensters ändere und das Feld umschalte, wird die Karte oft nur teilweise gefüllt. Dies ist ein bekanntes Problem mit der Mapbox GL API.
Aus ihrer Dokumentation:
Wenn Sie Ihre Karte versteckt sind zunächst mit so etwas wie display: none und sie dynamisch mit JavaScript zeigt, kann es einige Probleme haben erscheinen und Dimensionierung korrekt. Die Karte kann ihre eigene Größe nicht herausfinden, wenn sie von der Seite ausgeblendet wird, da sie in der Browser-Berechnung keine Größe hat.
Mit MapBox GL JS Sie können map.resize() rufen Sie die Karte zu erkennen und die Größe
Also, ich brauche MapBox die map.resize() Funktion aus meinem jQuery-Code aufzurufen, wenn die Schiebefenster ist geöffnet. Das Problem ist, ich kann es nicht funktionieren lassen. Ich habe versucht, die folgenden:
1: $(map).trigger('resize');
2: $(window.map).resize();
3: $(window.map).trigger('resize');
as well as
4: $(window).trigger('resize');
Das Ding ist, ich bin nicht sicher über meine Syntax hier und die richtige Art und Weise eine Funktion in einem anderen Skript in jQuery Wohnsitz zu rufen. Ich habe bestätigt, dass das 'map'-Objekt global ist, da die Eingabe von map.resize()
direkt in die Dev-Tools-Konsole meines Browsers funktioniert [dh. behebt die Kartenanzeige]. Ich kann jQuery einfach nicht dazu bringen, die Funktion zu bestehen.
Auch seltsam ist, dass $(window).trigger('resize')
hat nicht funktioniert, wie manuelle Größenanpassung des Browser-Fensters löst automatisch die Funktion "map.resize()" auch [und behebt das Map-Rendering].
EDIT:
Sollte erwähnt haben. Ich habe das map
Objekt global verfügbar gemacht mit: window.map = map;
innerhalb des mapbox.js Skripts und dafür gesorgt, dass das mapbox.js Skript vor dem jQuery geladen wird, aber immer noch keine Freude.