Nachbarschaft
Sonntag, 4. Dezember 2005, 20:21
GeoUrl ist ein Dienst, der Webseiten zu ihren entsprechenden geographischen Daten zuordnet. Eine der interessantesten Informationen, die man darüber erhalten kann, ist die Liste der benachbarten Webseitenbetreiber.
Voraussetzung für das Funktionieren dieses Dienstes ist die Eintragung der geographischen Daten in die META-Tags der Webseite etwa in folgender Form:
<meta name="geo.position" content="52.345;9.7953" />
Ich habe hier eine SVG-Grafik erstellt, die alle eingetragenen Webseitenbetreiber in einem Umkreis von 30 km von mir (Döhren, Hannover) ausgehend darstellt. Eigentlich sollte es nur ein AJAX-Test werden, aber man kann’s eigentlich beliebig erweitern (Karte im Hintergrund??). Vielleicht mache ich auch irgendwann ein Plugin draus…
Beim Überfahren der Punkte mit der Maus sollten die Titel der einzelnen Seiten erscheinen. Durch einen Klick öffnet sich ein neues Fenster mit der angeklickten Seiten.
Ihr Browser kann leider keine eingebetteten Frames anzeigen:
Sie können die eingebettete Seite über den folgenden Verweis
aufrufen: Nachbarschaft
Update 29. März 2006
Endlich kann auch der Internet Explorer mit installiertem ASV die Grafik ordentlich anzeigen. Das Problem bestand darin, dass entweder der ASV oder der IE keine CSS-Angaben mit Unterstrich verstehen konnte. Und das habe ich erst nach sehr langer Suche in einer newsgroup gefunden.. Die Lösung bestand darin in der Deklaration innerhalb der CSS-Datei alle Unterstriche durch Punkte zu ersetzen. In der SVG-Datei habe ich dann statt einer Klasse immer zwei eingetragen. D.h. aus der Klasse .autobahn_fg wurde der Klassenverband .autobahn.fg.
Weiterhin habe ich angefangen, eine Navigation möglich zu machen. Das grösste Problem bestand darin, die Knöpfe am äusseren Rand zu positionieren. Stellt sich heraus, man kann svg-Elemente verschachteln. Das wissend, kann man für das innere svg-Element eine viewBox definieren:
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox=”0 0 100 100″ height=”100%” width=”100%” preserveAspectRatio=”none”>
Innerhalb dieses Elements lassen sich nun beliebige Elemente in den Koordinaten 0 bis 100 positionieren. Die Box zwischen den Koordinaten 0,0 und 100,100 wird immer auf das derzeitige Maximum vergrössert. Gleichzeitig hat das den Vorteil, dass nun die Knopfebene und die Kartenebene getrennt verschoben werden können. Details später isa.
Update 19. Dezember 2005
Nun werden einige Strassen gezeichnet. Alle geographischen Daten werden in UTM-Koordinaten umgerechnet, damit Strassenkoordinaten und Webseiten-Punkte übereinandergelegt werden können. Die Koordinaten der Strassen werden zur Zeit noch per Hand (und Auge) aus einer Karte abgelesen und sind dementsprechend nicht wirklich genau, aber man kann die Hamburger Allee/Berliner Allee, den Aegidientorplatz, die Maschseepromenade und die Marienstrasse erkennen (wenn man weiss wonach man Ausschau halten muss!). Der Rest von Hannover muss noch “erschlossen” werden.. Update: Nun wird beim Überfahren einer Strasse der Name angezeigt. Außerdem sind nun zwei Schnellstrassen zu sehen und meine Umgebung (”Peiner Strasse” und “Vor der Seelhorst”). In Zukunft sollten die verschiedenen Strassetypen ein- und ausschaltbar sein. Ausserdem sollten geographische Merkmale nachgeladen werden (Maschsee, Leine …). Es werden jetzt drei Anfragen abgeschickt: Die erste Anfrage gilt den GeoUrls, die zweite ist für Strassen (die könnten auch in grössere und kleinere unterteilt werden…) und die letzte ist für “shapes”, also alle Flächen, die extra dargestellt werden (Maschsee, später Wälder…).
Komischerweise scheint die Kombination IE+ASV keine Klassen zu unterstützen, deshalb sehen die Strassen bei IE komisch aus. Bitte benutzt in diesem Fall zur Zeit Firefox.
Die GeoURL-Daten sind immer noch statisch auf dem Webserver abgelegt, da ich zu faul war, ein Cache-System zu schreiben..
In der ersten Erklärung zum Algorithmus, habe ich noch gedacht, ich bräuchte getSubStringLength(), das ist allerdings nicht der Fall, die Funktion getBBox() erfüllt genauso gut die Aufgabe. Man sieht es daran, dass die Kästen der Seitentitel sich an die Längen der Seitentitel anpassen.
Noch kein Kommentar..
