Openlayers location timeout?

Hallo zusammen,

über folgende Funktion erzeuge ich Marker auf einer Karte:

 map.addLayer (track = new OpenLayers.Layer.PopupMarker('Marker', {
	  createHtmlFromData: function (data) {
   },

	 location: 'points.php?release=1',			

		createIconFromData: function (data) {
    
    ....

Gesetz des Falles, der Server, auf welchem die Datei points.php liegt reagiert nicht, kann man dort irgendwie einen Timeout definieren?
Oder ist jemandem, sofern dies nicht möglich ist, ein “schneller” unkomplizierter Workaround bekannt?

Danke fürs Lesen und Feedback :wink:

Boris

Hat niemand eine Idee?

Ich formuliere mal etwas zum Hintergrund.

Ein Bekannter startet in Kürze eine Aktion.
Sein Freund Kenny lag nach einem Unfall 1 Jahr im Wachkoma.
Nun sitzt er im Rollstuhl. Mein Bekannter möchte ihm beweisen, welche Stärken in einem Menschen liegen und möchte als Beweis einen 114 Km Lauf von Wilhelmshaven nach Bremen durchführen. Ich habe mir überlegt, ihm einen Peilsender mit auf den Weg zu geben, der seine Position an einen Ortungsserver meldet. Seine Freunde, Bekannte und natürlich auch externe Interessierte können ihn live verfolgen.

Die Internetseite muss natürlich “so redundant wie möglich” sein, d.h. am obigen Beispiel müsste immer eine Datei bereit stehen, die die Daten liefert.

Mein Gedanke wäre gewesen, einen Timeout zu definieren, Timeout erreicht, verwende anderen Server.
Ist sowas denkbar / möglich?
Wie wäre eure Herangehensweise?

Ggf. direkt über den Nameserver gehen und als zweiten NS eine gespiegelte Maschine verwenden?

Ich kenne deine Openlayers-Kenntnisse nicht, aber prinzipiell sollte das gehen.

Man kann die ganz allgemein gehalte Layerdefinition so aufbrechen, dass das im Endeffekt auf einen HTTP-Request hinausläuft, dessen Returncodes man selbstverständlich dort auch abfangen kann. Mit 2-3 Klicks ist das allerdings nicht getan. Selbst mir ist das momentan zu hoch.

eventuell gibt es im Openlayers-Forum (englisch) Rat.

Gruss
walter

Bei XMLHttpRequest kann man einen “timeout” setzen und mit “ontimeout” darauf reagieren.

Wenn ich das richtig sehe, ist die Klasse OpenLayers.Layer.PopupMarker von Netzwolf? Und daher das “location” keine Eigenschaft von OpenLayers, sondern dieser Klasse. Die verwendet intern OpenLayers.Request.GET, an den darin verwendeten XMLHttpRequest kommt man aber nicht ran, ohne OpenLayers selbst zu ändern und einen “timeout” scheint man nicht übergeben zu können.

Hier noch mögliche Alternativen, ob die aber besser sind weiß ich auch nicht:
https://github.com/perliedman/leaflet-realtime
http://blog.thematicmapping.org/2014/08/making-real-time-travel-map.html
http://blog.thematicmapping.org/2014/07/live-tracking-from-oslo-to-bergen-by.html
Server-Sent Events wären noch passend, aber von IE mal wieder (noch) nicht unterstützt

Moin,

JavaScript kennt die setTimeout()-Methode, und ein OpenLayers.Request reagiert auf abort(). Wenn man Zugriff auf das Request-Objekt hat (und den kann man sich beschaffen), kann man eine laufende Anfrage vorzeitig beenden. Doch wozu?

Die Datei “points.php” liegt auf dem gleichen Server wie die Webseite. Wenn der Server down ist, brauche ich über das points.php nicht nachzudenken, weil bereits die Seite nicht erscheint.

Ich kann also davon ausgehen, dass der Server läuft. Warum sollte (korrekte Programmierung vorausgesetzt) das points.php “nicht antworten”?

BTW: was genau soll dargestellt werden? Das “location” dient dazu, einmalig eine fixe URL abzurufen (entspricht dem OpenLayers.Strategy.Fixed). Die Dynamik eines Laufes bildet es nicht wirklich gut ab.

Gruß Wolf

Nachtrag: ein Lauf im Web kann überaus langweilig sein. Ohne Reinzoomen sieht man: nichts. Und mit Reinzoomen: auch nicht wirklich viel.