Landkarte Modul-Mehr Infos bei mouseover, nicht nur username

Begonnen von gg, 08 Januar 2007, 16:20:21

⏪ vorheriges - nächstes ⏩

0 Mitglieder und 1 Gast betrachten dieses Thema.

gg

Hallo, Ihr Lieben und ein gutes neues Jahr,

habe mir gerade das Landkartenmodul installiert.

Wie kann man die u.g. Funktion erweitern, dass mehr als nur der username erscheint, evtl. auch über mehr als eine Zeile (also mit Zeilenumbruch zum strukturieren)?

Als Beispiel:

München
username, richtiger Name, homepage (klickbar)

Datei: inc/map.func.php

// Einträge aus der Datenbank laden und nach Pixelkoordinaten gruppieren
function getPoints($id=0) {
// Suche ?
$q = 'SELECT uname, user_from, user_name, user_url
FROM '.TABLE_USER;
if($id) $q .=" WHERE uid = '".mysql_real_escape_string($id)."' ";

global $db;
$res = $db->query($q);
$p=array();

// Gefundene Einträge durchgehen
while($row = mysql_fetch_assoc($res)) {
if($row['user_from']){
$res2=$db->query("SELECT lon, lat, ort FROM ".TABLE_GEODB." WHERE plz LIKE '".mysql_real_escape_string($row['user_from'])."' LIMIT 1");
$row2 = mysql_fetch_assoc($res2);
// Längen- und Breitengrad in Pixelkoordinaten umrechnen
$x=lon2px($row2['lon']);
$y=lat2px($row2['lat']);
// Eintrag in das Array übergeben (X -> Y -> Ort -> N -> Username )
// Durch das verwenden der X u. Y Pixelkoordinaten als Array-Keys,
// werden mehrere Einträge auf einem Pixel automatisch zusammengefasst
if($x <= MAP_WIDTH && $y <= MAP_HEIGHT && $x > 0 && $y > 0)
$p[$x][$y][$row2['ort']][] = $row['uname'];
}
}
return $p;
}


// Liste durchgehen und ausgeben
function generatePoints(&$p) {
foreach($p AS $x => $xs) {
foreach($xs AS $y => $ys) {
drawPoint($x, $y, $ys);
}
}
}

// Punkt zeichnen
function drawPoint($x, $y, &$p) {
$s = '';
$usercount = 0;

// Inhalt des Mouse-Over-DIVs
foreach($p AS $ort => $user) {
// Nicht der erste Ort für diesen Punkt? -> Zeilenumbruch
if($s) $s .= '<br/>';

// Ortsname
$s .="<h2>$ort</h2>";

// Usernamen
foreach($user AS $key => $name) {
$s.=($key?', ':' ').str_replace("'", "\\'",$name);
$usercount++;
}
}

// Größe des Punktes ( css-class) anhand der Anzahl der User auf diesem Punkt festlegen
foreach($GLOBALS['UserCountClass'] as $dCount => $dClass) {
if($usercount > $dCount || $_GET['m'])
$cssClass = $dClass;
}

// Punkt ausgeben
echo '<a href="modules.php?name=Members_List&letter=Alle" onMouseOut="h();" onMouseOver="s(this, \''.$s.'\');" class="'.$cssClass.'" style="left:'.($x*RASTER_SIZE).'; top:'.($y*RASTER_SIZE).'"></a>'."\n";
}


Ich bekomme das einfach nicht hin!

Danke, wenn mal jemand schaut oder sogar helfen könnte???


Herzliche Grüsse aus Berlin
Gabi
___________________________________
pragmaMX 0.1.9, 1.20.4.18
Probieren geht (manchmal) über studieren!

Andi

Hi :)

irgendwo in dem script müsste eine Kontaktadresse stehen, von dem Macher des Scriptes.

Wir stellen das hier zwar gerne zum Download bereit, aber support bei solch speziellen Problemen, können wir vom Team hier nicht geben.
Sorry....
schön´s Grüssle, Andi

xaver

Hi,
ich bin der "Macher" (eigentlich nur der, der das Script angepasst hat).

Also es geht auf jeden Fall mehr Infos anzuzeigen. Ich hab dir das mal gemacht...
Die Dateien einfach ins Verzeichnis /modules/Landkarte/inc/ kopieren und die alten Dateien mit diesen ersetzen...

sollte klappen  :BD:

ich hab in die Dateien //EDIT: HIER bla bla reingeschrieben, damit du siehst, was ich verändert habe.

[gelöscht durch Administrator]

HanSolo

Moin zusammen,

erst mal ein dickes Lob an Xaver .. ein sehr schönes Modul, das viel Freude macht .. vielen Dank dafür.

Allerdings habe ich rein technische Probleme, die neue rar-Datei hier runterzuladen; egal ob mit dem IE oder FF - ich erhalte jedesmal eine modules.php zum DL - und wenn ich die nach erfolgtem DL umbenenne, dann erhalte ich "Fehler in gepackter Datei" ... kannst du mir den Anhang bitte mal zumailen (Adresse per PN unterwegs) - Danke!

wenn mir die Punkte für die einzelnen User von Anfang an zu klein sind .. dann muss ich die Grafiken austauschen - ist das richtig @ Xaver?

Lieben Gruß
Oliver / HanSolo
Lieben Gruß

Oliver / HanSolo

xaver

Also da gibts die dateien mit den "mehr Infos" zum User: http://xavernitsch.xa.funpic.de/inc.rar
Des ist aber nicht soo schön geworden, weil die Links zu den Homepages mit css so formatiert waren, dass es was ganz komisches angezeit hat... des musste ich ändern... alles in allem net soo toll geworden.


ABER für alle, die mehr infos anzeigen lassen wollen: :thumbup:
in der Datei inc/map.funk.php diese Änderungen vornehmen:
das:(Zeile 27ff)
// Suche ?
$q = 'SELECT uname, user_from
FROM '.TABLE_USER;

mit dem:
// Suche ?
//oder andere Spalten aus der Tabelle {Tabellenprefix}_users
$q = 'SELECT name, uname, user_icq, femail, user_from
FROM '.TABLE_USER;

und das:(Zeile 44ff)
// Eintrag in das Array übergeben (X -> Y -> Ort -> N -> Username )
// Durch das verwenden der X u. Y Pixelkoordinaten als Array-Keys,
// werden mehrere Einträge auf einem Pixel automatisch zusammengefasst
if($x <= MAP_WIDTH && $y <= MAP_HEIGHT && $x > 0 && $y > 0)
$p[$x][$y][$row2['ort']][] = $row['uname'];

mit dem:
// wie es ausgegeben werden soll formatieren
$infos = $row['name'].' ('.$row['uname'].') '.$row['femail'].' ICQ:'.$row['user_icq'];
// Eintrag in das Array übergeben (X -> Y -> Ort -> N -> Username )
// Durch das verwenden der X u. Y Pixelkoordinaten als Array-Keys,
// werden mehrere Einträge auf einem Pixel automatisch zusammengefasst
if($x <= MAP_WIDTH && $y <= MAP_HEIGHT && $x > 0 && $y > 0)
$p[$x][$y][$row2['ort']][] = $infos;

ersetzen und am Ende der Datei (Zeile 76ff) bei // Usernamen das Komma im Code
$s.=($key?', ':' ').str_replace("'", "\\'",$name);
durch:
$s.=($key?'<br> ':' ').str_replace("'", "\\'",$name);
ersetzen.

in der datei inc/std.css Zeile 47 (width: 200px;) (#inf) löschen.

das fertige sieht dann so: http://xavernitsch.xa.funpic.de/community/modules.php?name=Landkarte
und kann da heruntergeladen werden: http://xavernitsch.xa.funpic.de/erweiterung.rar


Es ist auch möglich eine Tabelle anzeigen zu lassen, aber das bekommt ihr glaub ich jetzt auch selber hin!




Zitatwenn mir die Punkte für die einzelnen User von Anfang an zu klein sind .. dann muss ich die Grafiken austauschen - ist das richtig @ Xaver?

nein ist nicht ganz richtig... kannst ja mal ausprobieren wies aussieht... nicht schön! :exclam: :thumbdown:
Außerdem wird der Punk auf der Karte ungenauer.
Du musst die .p1 .p2 .p3 .p4 Eigenschaften in inc/std.css auch noch ändern!!



PS: Toll, dass mein script so gut ankommt! :BD:

CanKan

Danke xaver,  :thumbup:


das sieht jetzt schonmal ganz gut aus. Habe auch einpaar andere Ergänzungen gemacht. Bei mir haben noch nicht alle PLZ eingegeben. Ich kann mir nicht vorstellen wie es aussehen würde wenn 100 User auf dem Punkt aufgelistet werden. Man kann es dann auch nicht mehr runterscrollen.  :gruebel:

Könnte man denn da nicht was einbauen, dass der Bereich fest bleibt, damit man mit dem Maus auf die Namen klicken kann, dass man dann in den Profilen kommt :)


gruß

CanKan
Der Hund bellt, die Karawane zieht weiter.

xaver

Also gut, wenn das verlangen nach den vielen infos so groß ist, dann werd ich mich daheim (ich bin grad in der Schule) mal hinsetzen und das so abändern, dass ihr zufrieden seid ;)

Wers selber probieren will: das onmouseout="h()" entfernen und irgendwo anderes im div, dass die infos anzeigt ein onmousedown="h()" einbauen, damit man es schließen kann. auserdem könnte man das div in der css Datei so formatieren, dass es eine feste größe hat und overflow: scroll; einstellen.

Viel Spaß beim ausprobieren!!! :nuke:

xaver


gg

Hallo, Xaver,

danke, dass Du so fleissig beim Helfen bist!

ich habe jetzt die Version 2.1 genommen + die modifizierte map.func.php für mich.

Es werden keine Punkte der Userorte angezeigt, weder im Firefox 2.0 noch im IE 7


Ich hatte bereits bei der Version 1.6 meine users Tabelle modifiziert, indem ich ans Ende ein neues Feld "user_zip" erstellt hatte, was auch analog zum ursprünglich ausgelesenen Wert des Feldes user_from durch Änderung an den entsprechenden Stellen funktioniert hat.

Die gleichen Stellen habe ich auch bei den Dateien der neuen Version geändert.

Das zusätzliche Feld user_zip habe ich natürlich auch in allen relevanten Eingabeformularen und Abfragen bzgl. der user ergänzt, falls die Fragen kommen sollte. Aber nicht nur wegen der Landkarte, sondern weil ich fand, dass das Feld PLZ (ZIP) generell in die Users-Tabelle sollte (wichtig für diejenigen, die pages für Firmen mit Kunden bzw. (Kauf-) Interessenten als User haben)

Also, wie gesagt, mit der älteren Version hatte es auch geklappt.

Hat jemand von den anderen, die das Modul installiert haben, den gleichen Fehler?
Herzliche Grüsse aus Berlin
Gabi
___________________________________
pragmaMX 0.1.9, 1.20.4.18
Probieren geht (manchmal) über studieren!

Liu-Kang

Ich hatte den gleichen Fehler.
Probeweise habe ich dann auf einer Testseite (ich übernehme keine Verantwortung!) das Setup nochmal drüberrennen lassen und siehe da... es waren wieder alle Punkte da.

Catmandu

Hallo Zusammen,

Ein Lob und mein Dank für das gelungene Modul.

Drei Fragen hätte ich:

1. Wie kann ich es erreichen, daß das Geschlecht mit einem Icon angezeigt werden kann?
2. Wie kann ich den Realen Namen ausblenden? Username soll angezeigt werden.
3. Wie kann ich es erreichen, daß wenn ich das Feld verlasse es sich per offmouse von alleine schließt?

Hab zwar einiges versucht, aber da ich kein krack bin, habe ich es nicht hinbekommen.

Wer kann bitte weiter helfen?

Habt vielen Dank.

Gruß
Catmandu

xaver

das mit dem mouseout hab ich auch schon versuch aber nicht hinbekommen... da kenn ich mich zuwenig mit javascript aus

um andere infos anzuzeigen musst du im ordner inc die datei map.func.php modifizieren
in Zeile 26, Zeile 49 und Zeilen 86-88 müssen verändert werden!

Zeile 26 Tabellenspaltennamen der Tabelle prefix_user, die die Infos, die angezeigt werden sollen, enthalten, hinzufügen.

Zeile 49 die ausgelesenen dem array hinzufügen

Zeilen 86-88 des in html packen