GeoDB Import für Usermap

Begonnen von nudels64, 13 März 2014, 20:38:35

⏪ vorheriges - nächstes ⏩

0 Mitglieder und 1 Gast betrachten dieses Thema.

nudels64

ZitatIm Moment kann es nur Deutschland. Es ist aber kein grosser Aufwand das auf angrenzende Länder zu erweitern. Die passende Grafik und aktuellen Daten aus der GeoDb vorausgesetzt. Wobei gerade dort hapert es. Die Daten in der GeoDb sind z.Zt, nur für Deutschland aktuell und sinnvoll verwendbar.

Hallo Andi, Du hattest mal geschrieben, das der Import der GeoDB für die angepasste Usermap recht einfach zu bewältigen ist. Leider scheitert es da bei mir. Die Grafik für DE-AT-CH hab ich angepasst und ausgerichtet. Jetzt fehlen mir nur Daten für AT und CH. Kannst Du mir da kurzfristig Hilfe anbieten?
Lieben Gruß
Andreas
#################################
CMS-Version:
pragmaMx 2.1.2.94 (2014-10-22)
PHP-Version:
5.6.24-he.0
MySQL-Version:
5.6.31-77.0-log
Server-Version:
Apache

Andi

Oh Gott, das ist ja Jahrhunderte her....

Du willst jetzt die Geodaten für Österreich und die Schweiz dazu importieren?

Hast ne schönere grafik, wie das olle Ding jetzt?
Zeig mal  :smile:
schön´s Grüssle, Andi

nudels64

#2
Ich weiß nicht ob die schöner ist, aber sie läuft. Die Koordinaten scheinen auch einigermaßen zu stimmen.

Jetzt fehlen mir nur noch die Daten von der Schweiz und Österreich. Die Neuanmeldungen sind glaub schon ein wenig brüskiert. :smile:



Hm, die Karte wird nicht geladen. Moment. So, hier ein Ausschnitt, da nur für Mitglieder sichtbar.

EDIT: Hier mal noch der direkte Link Andi: http://www.peugeot-metropolis.de/Usermap.html

Ich versuch grad das Hintergrundbild transparent zu bekommen und das Popup soll auch noch angepasst werden.
Lieben Gruß
Andreas
#################################
CMS-Version:
pragmaMx 2.1.2.94 (2014-10-22)
PHP-Version:
5.6.24-he.0
MySQL-Version:
5.6.31-77.0-log
Server-Version:
Apache

Andi

Moin :)

habe mal angefangen das Modul etwas zu überarbeiten und gleich aktuelle Daten von http://opengeodb.org zu importieren.
Das Problem mit dem weissen Hintergrund habe ich auch gerade gefunden. Das Bild wird ja dynamisch mit der GD-Bibliothek verändert und da fehlen einfach die Optionen für die Transparenz.

Im groben funzt das Ding schon.
Mit dem Datenimport kämpfe ich noch, sind ja fast ne Millon Datensätze in 4 Tabellen verteilt, die da ausgelesen und in das passende Format für die usermap gebracht werden müssen...


@ nudels64
Gib mal bitte die Koordinaten für das neue Bild
schön´s Grüssle, Andi

nudels64

Kann erst jetzt antworten. Hab nen schönen Abend bei Bier und Wodka gehabt. Dank Dir Andi erst einmal für die schnelle Hilfe. Anbei meine Einstellungen der Range:

// $MyMap->setRange(5.65, 15.2 , 47.2, 55.35);
$MyMap->setRange(5.5, 17.5 , 45.5, 55.3);


und einmal

$result1 = sql_query("select laenge,breite from plz_data where plz=$user_from");
            if (sql_num_rows($result1) == 1) {
                list ($x, $y) = sql_fetch_row($result1);
                $x = ($x-5.5) * 750 / (17.5-5.5);
                $y = (55.3 - $y) * 1024 / (55.3-45.5);


Das müßte alles sein.
Lieben Gruß
Andreas
#################################
CMS-Version:
pragmaMx 2.1.2.94 (2014-10-22)
PHP-Version:
5.6.24-he.0
MySQL-Version:
5.6.31-77.0-log
Server-Version:
Apache

nudels64

#5
Ist es einfacher das Modul hier zu erweitern oder eine Bridge für ein fertiges Standalone Addon zu basteln, Andi? Ich habe hier nähmlich noch ein hübsches Teil. Da hab ich Daten für ganz Europe etc. zu gefunden.

http://www.peugeot-metropolis.de/Mitgliederkarte.html

Lieben Gruß
Andreas
#################################
CMS-Version:
pragmaMx 2.1.2.94 (2014-10-22)
PHP-Version:
5.6.24-he.0
MySQL-Version:
5.6.31-77.0-log
Server-Version:
Apache

Andi

#6
Moin :)

eigentlich gehört da wirklich mal was neues gemacht...
Aber nicht schon wieder auf Basis von irgend nem alten Krams, dein Beispiel ist ja anscheinend auch schon 8 jahre alt, sondern was ganz neues. Irgendwie mit Bing- oder Google- Maps...
Aber dafür fehlt die Zeit ;)


Anbei die grunderneuerte Vorab-Test-Version, des alten Usermapmoduls.
Die wichtigsten Änderungen:
- komplett angepasst an pragmaMx 2.0 (läuft aber auch noch unter 1.12.3)
- generierte Map wird nicht mehr in der Session gespeichert, sondern im pragmaMx-Cache
- Map-Hintergrund transparent
- neue GEO-Daten von http://www.geonames.org/ , inkl. Schweiz und Österreich
- richtige (wenn auch einfache) Setuproutine


Zur Installation bzw. Update:
- den Ordner Usermap in den Modulordner kopieren
- darauf achten, dass die alten Dateien wirklich überschrieben werden
- Setup aufrufen:
- - pragmaMx 2.0: admin.php?op=Usermap/setup
- - pragmaMx 1.12.3: modules.php?name=Usermap&file=setup
- den Anweisungen folgen

Achtung die alte Geodaten Tabelle (plz_data) wird gelöscht, backup machen, wenn man die behalten will.


Das Modul ist nicht ganz fertig, es fehlt noch der komplette Adminbereich für die Einstellungen und die hässlichen Popups für die Useranzeige sollten noch besser werden...
Ausserdem müsste das Kartenbild optimiert werden. M.E. ist es viel zu dunkel und hat zuviele unnötige Stricheleien im Bild. Ausserdem ist die Dateigrösse viel zu riesig, ist ja ein 3/4 MB....
Kommt noch...

Jetzt hat aber erstmal pragmaMx 2.0 Prio ;-)



edit:
achso, beinahe vergessen...

Bei der Eingabe des Wohnortes werden jetzt viel mehr Möglichkeiten erkannt.
Es genügt das Voranstellen des Länderkürzels CH, A, oder D und die nachfolgende Postleitzahl.
Gross Kleinschreibung, Leerzeichen oder sonstwas dazwischen, 4 oder fünfstellige Postleitzahl, alles egal....
Sollte passen ;)
Auch eigentlich falsche Länderkürzel wie AT oder Ö werden erkannt.
Fehlt das Länderkürzel und ist die PLZ fünfstellig wird Deutschland angenommen...

edit 2:
Demo: http://www.pragmamx.org/Usermap.html

Wenn nach dem Setup die Karte ohne Pünktchen drin angezeigt wird, den pragmaMx-Cache zurücksetzen...
schön´s Grüssle, Andi

nudels64

Danke, danke Andi. Werd es gleich einbauen. :thumbup:
Lieben Gruß
Andreas
#################################
CMS-Version:
pragmaMx 2.1.2.94 (2014-10-22)
PHP-Version:
5.6.24-he.0
MySQL-Version:
5.6.31-77.0-log
Server-Version:
Apache

nudels64

#8
Andi, hab da noch "schwer was zu bemängel".  :BD: Ne im Ernst. Beim Setup wird die alte Tabelle plz_data nicht gelöscht und die neue Tabelle so angelegt: "${prefix}_plz_data".
Habe jetzt mal alles manuell umgeschrieben zu mx05bea8_plz_data und den Datenimport selbst angeschubst. Habe dazu die Geodaten heraus kopiert und in die Tabelle importiert. Dauert ca. 5 Min. Nach dem Cache leeren werden jetzt alle eingetragenen User angezeigt. Teste jetzt noch ein wenig.
Nochmals lieben Dank für Deine Mühe. Hast mir eine große Freude damit gemacht. :drinks:

EDIT: Bei der Eingabe von A oder CH PLZkommt die Aufforderung die PLZ des Wohnortes einzugeben.

So sieht meine mx_userfunctions_options.php aus:

// ################################################
// / hier kann die Ueberpruefung der Benutzerdaten erweitert werden
// / es stehen alle uebergebenen Formularvariablen im array $pvs zur Verfuegung
// / die entsprechende Fehlermeldung muss in der Variablen $pvs['userCheckError'] gespeichert werden
function userCheck_option($pvs)
{
    // global $user_prefix;
    // diese Variable mit der Fehlermeldung belegen wenn unvollst‰ndige oder unkorrekte Daten
    // $pvs['userCheckError'] = "";
   
    // es muss eine fuenfstellige deutsche Postleitzahl angegeben werden:
    if (empty($pvs['name']) && empty($pvs['realname'])) {
           $pvs['userCheckError'] .= "Du musst noch  Deinen richtigen  Namen angeben.<br>";
    }
    if (empty($pvs['user_from']) || !preg_match('#[0-9]{5}#', $pvs['user_from'])) {
        $pvs['userCheckError'] .= "Bitte die Postleitzahl Deines Wohnortes angegeben<br>";
    }
   
    return $pvs;
}

?>
Lieben Gruß
Andreas
#################################
CMS-Version:
pragmaMx 2.1.2.94 (2014-10-22)
PHP-Version:
5.6.24-he.0
MySQL-Version:
5.6.31-77.0-log
Server-Version:
Apache

nudels64

#9
Versuche es jetzt so:

// ################################################
// / hier kann die Ueberpruefung der Benutzerdaten erweitert werden
// / es stehen alle uebergebenen Formularvariablen im array $pvs zur Verfuegung
// / die entsprechende Fehlermeldung muss in der Variablen $pvs['userCheckError'] gespeichert werden
function userCheck_option($pvs)
{
   // global $user_prefix;
   // diese Variable mit der Fehlermeldung belegen wenn unvollst‰ndige oder unkorrekte Daten
   // $pvs['userCheckError'] = "";
   
   // es muss eine fuenfstellige deutsche Postleitzahl angegeben werden:
   if (empty($pvs['name']) && empty($pvs['realname'])) {
          $pvs['userCheckError'] .= "Du musst noch  Deinen richtigen  Namen angeben.<br>";
   }
   if (empty($pvs['user_from']) || !preg_match('#^([[:alpha:]]{1,3})?\W*([0-9]+)#u', $pvs['user_from'])) {
       $pvs['userCheckError'] .= "Bitte die Postleitzahl Deines Wohnortes angegeben<br>";
   }
   
   return $pvs;
}

?>


Jetzt kommt keine Fehlermeldung mehr. Aber eine Anzeige erhalte ich noch nicht. Bei deutschen PLZ klappt alles.
Lieben Gruß
Andreas
#################################
CMS-Version:
pragmaMx 2.1.2.94 (2014-10-22)
PHP-Version:
5.6.24-he.0
MySQL-Version:
5.6.31-77.0-log
Server-Version:
Apache

nudels64

Es geht jetzt wie gewünscht Andi mit der neuen mx_userfunctions_options.php. Die Eingabe kann im Moment nur so erfolgen DE XXXX oder ohne Länderkennung, AT XXXX und CH XXXX. Ich bin schon mal sehr zufrieden damit.
Lieben Gruß
Andreas
#################################
CMS-Version:
pragmaMx 2.1.2.94 (2014-10-22)
PHP-Version:
5.6.24-he.0
MySQL-Version:
5.6.31-77.0-log
Server-Version:
Apache

Andi

Hoi :)

warum die Tabelle nicht richtig gefüllt wurde ist mir ein Rätsel.
Dass die alte Tabelle nicht gelöscht wurde, liegt an einem Fehler den ich übersehen habe...

Der Check müsste so einigermassen funktionieren, ist ja der regex, den ich auch zum Filtern der land/plz Kombination verwendet habe...

Bei der Anzeige der Karte musst du den Cache beachten solange du bastelst. Die neu generierte Karte wird für jede Admin/Usergruppen Kombination der Besucher extra gecached und im Cache gehalten.
Sie wird nicht wie früher bei jedem Seitenaufruf neu generiert.

Kommen jetzt neue User zur Anzeige dazu, so erscheinen die erst, wenn der Cache neu geschrieben wird. Für pragmaMx 2.0 bau ich da noch ne Automatik rein. Für 1.12 geht das aber nicht.
Zum Probieren kannst du einfach jedesmal nach irgendeinem User, der nichtmal existieren muss, suchen. Beim Suchen wird auch ein Extra-Cache Bildchen generiert...


PS:
ich würde den Check ganz rauswerfen.
ne nette Nachricht im Forum an die User und das funzt auch so ;)
Ist bei uns im Motorrad Forum auch so. Und im anderen Forum trägt der Admin sogar händisch die Daten ein...
schön´s Grüssle, Andi

nudels64

Aha, also sieht sich der neue User nach dem Reg. nicht gleich in der Karte, erst wenn ich den Cache manuell zurücksetze bzw. jemand nach einem User sucht. Richtig?
Lieben Gruß
Andreas
#################################
CMS-Version:
pragmaMx 2.1.2.94 (2014-10-22)
PHP-Version:
5.6.24-he.0
MySQL-Version:
5.6.31-77.0-log
Server-Version:
Apache

Andi

Fast...

Die Cachezeit beträgt 30 Minuten, danach wird automtisch neu generiert.
Und es ist unabhängig von der Suche. Wenn man sucht, gibt es für diesen Suchbegriff ein Extra Bildchen im Cache.

Die Cachezeit will ich noch einstellbar machen über das pragmaMx 2.0 Adminmenü.
Ausserdem ist es in pragmaMx 2.0 möglich, bei Useraktionen in beliebigen Modulen bestimmte Aktionen durchzuführen (Hooks). Damit kann ich dann den Cache erneuern, wenn ein User seine Daten ändert oder sich neu anmeldet etc...
schön´s Grüssle, Andi

nudels64

OK, das sollte reichen. Hauptsache die User werden irgend wann mal angezeigt. Die "alten" Herren werden schnell nervös wenn mal was nicht klappt.
Ich mache jetzt mal hier ein "Erledigt" dran und warte auf die Umstellung auf die neue Pragmamx Version. Danke Dir nochmals!
Lieben Gruß
Andreas
#################################
CMS-Version:
pragmaMx 2.1.2.94 (2014-10-22)
PHP-Version:
5.6.24-he.0
MySQL-Version:
5.6.31-77.0-log
Server-Version:
Apache