[OSM-Devserver] Dateirechte

Alexander Matheisen AlexanderMatheisen at ish.de
So Nov 21 12:39:13 CET 2010


> > Noch eine Ergänzung: Wenn ich das richtig verstanden habe, müsste
> > mod_tile von der Funktionsweise genau das machen, was ich suche. Aber
> > lässt sich das auch für meine Zwecke einrichten und wenn ja, wie?
> 
> mod_tile und Tirex ist auf dem dev-Server schon drauf. Die können aber nur
> mit PNG-Kacheln umgehen. Irgendwas mit Vektordaten können die nicht.


Wenn das also nicht geht, wie könnte man sich da selber was
zusammenbasteln?

Ich hab jetzt mal ein bisschen probiert und folgenden Ansatz bisher:

Beim Laden der Kacheln wird aus Openlayers heraus beim Laden jeder
Kachel ein PHP-Script aufgerufen, das in eine Tabelle die Kachelnummer
einträgt. Diese Liste könnte man dann per Cronjob mit einem Programm
regelmäßig abarbeiten.

Problem: Es müssen erstmal alle Kacheln vorhanden sein; schaue ich mir
einen Bereich auf der Karte an, wo keine Kacheln sind, werden die zwar
in die Warteschlange eingetragen, aber erstmal wird nichts angezeigt.

Ich hatte schon überlegt, statt direkt die Kacheln aufzurufen, ein
PHP-Script aufzurufen, das die Kacheln einließt und ausgibt. Wenn keine
Kachel vorhanden ist, soll es die bisherige Abfrage machen, aber leider
wartet dann OpenLayers nicht, bis das PHP-Script geantwortet hat.

Wenn ich also statt


var wikipediaLayer = new OpenLayers.Layer.Vector(wikipediaString,
	{
		projection: wgs84,
		maxResolution: 10.0,
		visibility: true,
		transitionEffect: 'resize',
		strategies:
		[
			new OpenLayers.Strategy.Grid()
		],
		protocol: new OpenLayers.Protocol.HTTP(
		{
			url: root+'tiles/${z}/${x}/${y}.json',
			format: new OpenLayers.Format.GeoJSON()
		})
	});


das PHP-Script aufrufe:

var wikipediaLayer = new OpenLayers.Layer.Vector(wikipediaString,
	{
		projection: wgs84,
		maxResolution: 10.0,
		visibility: true,
		transitionEffect: 'resize',
		strategies:
		[
			new OpenLayers.Strategy.Grid()
		],
		protocol: new OpenLayers.Protocol.HTTP(
		{
			url: root+'tiles/tile.php?zoom=${z}&x=${x}&y=${y}',
			format: new OpenLayers.Format.GeoJSON()
		})
	});

Wird das PHP-Script zwar jedesmal aufgerufen, aber es hat keine Zeit, zu
antworten, weil schon die nächste Anfrage kommt.


Weiß jemand, ob man dieses Verhalten irgendwie ändern kann?


Alex