2017-04-19 3 views
1

Ich verwende Mapbox GL JS API, um eine Mapbox-Map zu bearbeiten. Kurz bevor ich mein Ergebnis (welches eine canvas.toDataURL ist) auf den Server über HTTP hochlade, muss ich meine Karte (größere Auflösung) ändern und dann fitbounds verwenden, um zu den ursprünglichen Punkten zurückzukehren. Nachdem Fit-Grenzen ausgelöst wurden, dauert es eine Weile, bis die Karte alle neuen Kacheln geladen hat. Erst danach kann ich den Upload durchführen. Gerade jetzt, ich weiß nicht, ob es ein Ereignis gibt, das mir sagen kann, ob alle Kacheln geladen sind.MapBox-Ereignis, wenn alle Kacheln geladen sind

Ich habe alle möglichen Ladefunktionen und Ereignisse in der API versucht. Es gibt ein paar Probleme beim GITHUB-Projekt, aber sie sind jetzt mindestens ein Jahr alt und es gab kein Update. Mitte 2015 begannen sie über das Hinzufügen eines Leerlauf-Ereignisses zu sprechen, aber ich kann nirgendwo eine neue Dokumentation finden.

Hat jemand einen Weg gefunden, den Code darauf warten zu lassen, dass die Karte geladen wird? Oder gibt es Informationen zu einem Update für diese Funktion?

Ich bezweifle, dass es viel ausmacht, aber ich arbeite in einer angular.js App.

Antwort

3

Wir haben gerade einen Map#areTilesLoaded hinzugefügt, der nach dem klingt, wonach Sie suchen. Das sollte in der nächsten Version (v0.37.0) ausgehen. In der Zwischenzeit sollte Folgendes funktionieren.

map.on('sourcedata', (e)=> { 
    if (map.loaded()) { 
    // all tiles are loaded 

    // turn off sourcedata listener if its no longer needed 
    map.off('sourcedata'); 
    } 
}); 
Verwandte Themen