Wir haben einige Ebenen, die eine ol.source.XYZ
Quelle benutzen. Für die Ladestrategie verwenden wir ol.loadingstrategy.tile(new ol.tilegrid.createXYZ({}))
. Wir müssen sicherstellen, dass alle Kacheln vollständig in der Kartenansicht geladen wurden, bevor Sie mit anderen Vorgängen fortfahren.
Wir haben mehrere Artikel dazu gefunden und haben noch keine 100% ige Lösung gefunden, die uns die Lösung geben wird, die wir brauchen. Die Logik kehrt wahr zurück, auch wenn dies nicht der Fall ist. Wir haben versucht, die Ereignisse "tiroloadstart", "telleloendend" und "tiloloaderror" zu verwenden, wie im Beispiel gezeigt Seite, aber das scheint nicht immer das erwartete Ergebnis zu liefern.
Der GIS-Stack-Exchange-Artikel hier schien vielversprechend, weil Wir könnten den unten aufgeführten Code in Verbindung mit Ereignissen vom Typ "tleloadstart" / "telleloend" verwenden, aber es gibt eine Reihe von Funktionsaufrufen, die nur in ol-debug.js und nicht in ol.js
Ich habe zwei Fragen, kann jemand bitte irgendwelche zusätzlichen Gedanken in was wir vielleicht vermissen? Danke für Ihre Hilfe.
Ereignisse werden geladen
Sie haben richtigerweise angenommen, dass jedem tileloadstart
Ereignis auf der Quelle ein tileloadend
oder tileloaderror
für die entsprechende Kachel folgen sollte. Dies kann wie im verknüpften offiziellen Beispiel verwendet werden, um die Anzahl der Ladekacheln zu verfolgen.
Wenn die Summe der ausgegebenen Ereignisse tileloadend
und tileloaderror
der Anzahl der Ereignisse tileloadstart
entspricht, wird kein Ladevorgang ausgeführt. Wenn dies nicht der Fall ist, sollten Sie versuchen, ein reproduzierbares Beispiel zu erstellen, da dies wahrscheinlich ein Fehler in der Bibliothek wäre.
Es ist jedoch wichtig zu verstehen, was diese Ereignisse bedeuten. Das tileloadend
-Ereignis bedeutet nicht, dass die Kachel auf der Karte sichtbar ist, das bedeutet, dass die Kachel vollständig geladen wurde und für das Rendern verwendbar ist. Das tatsächliche Rendern der Kachel erfolgt nach dem Aufruf des Event-Handlers. Daher muss jede Logik zum Laden von Kacheln, die Informationen darüber benötigt, wann alle Kacheln geladen und gerendert werden (z. B. beim Erstellen von Screenshots / Erstellen von Ausdrucken), bis zum nächsten postrender
Ereignis.
Sie erwähnen 5-10 Sekunden zwischen einem tileloadend
und der Kachel, die tatsächlich auf der Karte erscheint, was zu lang ist, als dass sie mit dem Rendering zusammenhängt (es sei denn, Sie machen wirklich freakige Rendering-Callbacks).
ol-debug.js gegen ol.js
Wie viele JS-Bibliotheken ist OpenLayers-Code im Build-Prozess optimiert und minimiert, um kleinere und effizientere Builds zu erstellen. Alle Typen oder Funktionen, die nicht Teil der API sind, werden minimiert oder entfernt. Nur die Methoden, die in ol.js verfügbar sind und auf openlayers.org dokumentiert sind, sollten als Minimierungen verwendet werden Methoden können jeden Build ändern.
ol-debug.js ist eine nicht optimierte Version der Bibliothek, die beim Debuggen oder Durchsuchen verwendet werden soll.
Tags und Links tiles openlayers-3