GrandmasterA (Admin) Wissensch.. äh Hufschmied Threadstarter
Posts: 4053
Rang: Zeitreise-Fanatiker
|
Ich kenne dieses Feature als Add-On für PHPBB, Woltlab-Boards und PHPNuke. Diese Scripte sind allerdings sehr aufwändig, da sie die Karte als leere Grafik haben, dann mit Hilfe von Imagemagick (muss auf dem Server installiert sein) eine neue Grafik erstellen, die an den Stellen, wo Mitglieder wohnen einen Punkt in die Grafik setzen und dann noch ein AREA-Shape für jeden einzelnen Punkt erstellen, um einen Link darüber zu setzen (wer HTML kann, weiss was ich meine). Dazu gibt es dann eine Ortsdatenbank, die alle Postleitzahlen Deutschlands enthält und die zugehörigen Koordinaten auf der Karte, um den Punkt genau zu setzen. Allerdings als genaue Pixelangaben zu den verwendeten Karten-Grafiken und daher nicht für andere Grafiken anwendbar.
Alles in allem sehr aufwändig und aufgrund der Tatsache, dass die ZIDZ.COMmunity-Scripte größtenteils selbstgeschrieben sind kann man die bei den anderen Boards verwendeten Scripte nicht einfach auch hier benutzen.
Deshalb hab ich das für ZidZ.com komplett selbst programmiert, bzw. mein Arbeitskollege, der ein ähnliches Script schon mal für ein Projekt geschrieben hat, hat das Script für die Punkt-Positionierung auf der Karte geschrieben.
Als Datenbank dient die OpenGeoDB, die ich in meine MySQL-Datenbank integriert habe. Diese enthält mehr als 17.000 Einträge zu Orten aus Deutschland, Österreich und der Schweiz, wobei Deutschland ziemlich komplett ist, bei Österreich und der Schweiz kann es vorkommen, dass Orte fehlen. Jeder Ortsdatensatz enthält den Ortsnamen, die PLZ, bei Deutschland das Autokennzeichen sowie 2 Koordinaten - Längen- und Breitengrad des Ortes (longitude, latitude) und noch ein paar andere Einräge, die ich aber alle rausgeschmissen habe, um Platz zu sparen.
Nun wird bei allen Mitgliedern, die ihre PLZ im Profil angegeben haben der Längen und Breitengrad aus der Datenbank geholt und mit in den Datensatz mit den Angaben des Mitgliedes eingetragen. Sollte der Ort nicht gefunden werden, erscheint beim Speichern des Profils ein entsprechender Hinweis. Das Mitglied kann dann seinen Nachbarort angeben und ich trage die Koordinaten manuell in die GeoDB ein, so dass sie beim nächsten Mal mit gefunden werden.
Die Karte selbst ist hier eine leere Grafik. Die Punkte zu den Orten werden per div-Layer über die Karte gelegt und zwar als Datenbankabfrage zu allen Mitgliedern, die Längen- und Breitengrade besitzen... Die Position der Punkte wird über die Gradangaben im Verhältnis zur Größe der Grafik berechnet... ist nicht so leicht zu erklären... deswegen hat diesen Teil ja auch mein Kollege programmiert
Die Entfernungsberechnung funktioniert über Dreisatz-Formeln, die man mal im Matheunterricht hatte. Die Formeln gibt's aber auch im Netz
Alles in allem funktioniert das (wie man sieht) recht gut, auch wenn es bei den anderen Boards sicherlich professioneller gelöst ist.
|