2016-06-10 16 views
0

Wir laufen Open Layers 3.15. Manchmal erhalten wir eine fallengelassene oder fehlgeschlagene Kachel. Momentan wird nichts angezeigt (was für unsere Benutzer verwirrend sein kann), daher möchten wir dies durch eine Kachel ersetzen, die "keine Daten" oder so etwas sagt. Ich habe versucht, das Ereignis Aufnehmen und Austauschen der Quelle der Fliese zBOpenlayers 3 Ersetze eine fehlerhafte Kachel

  source.on('tileloaderror', function(){ 
       source.setUrl('./images/map/failureTile.png'); 
      }); 

aber das Problem dabei ist, anstatt dies zu tun, auf 1 Fliesen, es tut es für die gesamte Schicht, wir don‘ Ich will das.

Wer weiß, wie wir das nur für die Fliese tun können, die fehlgeschlagen ist und nicht die gesamte Schicht?

+0

Können Sie uns sagen, welche Art von Layer Sie erstellen? Z.B. Kachel, Bild usw. Zur Klarstellung soll 'source.setUrl' Platzhalter für Koordinaten haben. Diese Platzhalter werden durch tatsächliche Werte ersetzt, bevor die Anforderung an die instanziierte URL gestellt wird. – xnakos

+0

Hallo danke, ich erstelle eine ol.layer.Tile – Status420

Antwort

0

Eine Kachel, die nicht geladen werden konnte, sollte eine eindeutige Klasse (.olImageLoadError) haben. Sie können eine CSS-Regel definieren, die diese Elemente nicht anzeigt.

.olImageLoadError { 
    display: none !important; 
} 
+0

Danke, aber was ich tun möchte, ist die Kachel ersetzen, die mit einer unserer eigenen fehlgeschlagen ist (das ist eine graue Kachel mit 'keine Daten' darin geschrieben) . Natürlich, wenn es eine Möglichkeit gibt, dies über CSS zu tun, würde das auch für uns funktionieren. – Status420

+0

Die Klasse sollte auf einem Bildelement sein. Sie können die Quelle anstelle der Anzeige erzwingen. –

+0

Ich denke, das ist eine Openlayers 2-Funktion, nicht eine Openlayers 3, die ich sagen kann. – Status420

0

Sie konnten dieses versuchen:

source.on('tileloaderror', function(event) { 
    event.tile.getImage().src = './images/map/failureTile.png'; 
}); 

Sie müssen den event Parameter, dass können Sie die Fliese erhalten, die ausgefallen ist, so dass Sie das Bild der Fliese ändern können.

Warnung: Ich habe den obigen Code mit tileloadend anstelle von tileloaderror getestet, weil meine Kacheln bei mir nie ausfallen. :) Ich habe eine simulierte Fehlerrate mit Math.random() verwendet und einige zufällige Kacheln wurden durch das angegebene Bild ersetzt. Ich kann mir keinen Grund vorstellen, warum der obige Code nicht funktionieren würde. Wenn Sie bestätigen, dass es funktioniert, werde ich diese Warnung aus meiner Antwort entfernen. Ich habe es auf OpenLayers 3.14.2 und auf einer OSM-Quelle getestet.

+0

Vielen Dank Ich habe es versucht, und es ändert die URL, aber lädt das Bild nicht neu. – Status420