[Erledigt] Bitte um Javascript-Hilfe

  • Ich bin gerade dabei, den "VDR User Counter" etwas aufzumotzen. Dabei möchte ich den ungefähren Ort des Users aus der IP-Nummer ermitteln (das klappt bereits) und das Ganze mit einer Karte anzeigen. Ich habe das mal auf


    http://www.tvdr.de/x.htm


    in einem Mini-Beispiel zusammengestellt.
    Soweit klappt das schon recht schön. Wenn man den Marker mit der Maus verschiebt, dann wird die Anzeige im "Location:"-Feld entsprechend aktualisiert. Nun hätte ich aber auch gern, daß eine manuelle Veränderung im "Location:"-Feld umgekehrt den Marker entsprechend verschiebt. Das sollte in der Funtion locChanged() passieren, aber was da abläuft verstehe ich einfach nicht.
    Wenn ich z.B. eine Ziffer im Eingabefeld lösche, dann erhalte ich an der Debug-Konsole folgende Ausgaben:


    "(48.42076155285042, 12.340000000000032)" x.htm:20
    "loc = " "(48.42076155285042, 12.34)" x.htm:32
    "inp = " "(48.4207615528504, 12.34)" x.htm:33
    "A" "(48.42076155285042, 12.340000000000032)" x.htm:35
    "B" "(48.42076155285042, 12.340000000000032)" x.htm:37
    "C" "(NaN, NaN)" x.htm:39


    Die Ausgaben "A" und "B" zeigen das, was ich erwarte. Aber warum liefert marker.getPosition().toString() bei "C" "(NaN, NaN)"?


    Leider bin ich, was Javascript betrifft, ein ziemlicher Laie. Vielleicht ist das ja für einen Experten ein ganz offensichtlicher Fehler, den ich da mache. Kann mir da vielleicht jemand weiterhelfen?


    Klaus

  • Hi Klaus,


    keine direkte Hilfe, aber ein Tipp: wenn du dir das Leben vereinfachen willst: benutze jquery. Natives javascript finde ich grausam, mit jquery ist es gerade so ertragbar ;)


    Ciao Louis

  • In Zeile 38 ist ein Fehler:

    Code
    marker.setPosition(new google.maps.LatLng(locationInput.value));


    locationInput.value liefert einen String zurück und keine zwei Float-Zahlen, die durch ein Komma getrennt sind. Du musst die Nutzereingabe locationInput.value wohl trimmen (Klammern an Anfang und Ende wegschneiden) und aufsplitten über locationInput.value.split(","), dann hast Du zwei Strings. Die Strings kannst Du mit parseFloat() konvertieren. Und dann zwei Parameter übergeben.


    Gruß
    hepi

  • Wie genau soll die endgültige Benutzerführung sein? Frage deshalb, weil ich mir nicht vorstellen kann, dass jemand wirklich händisch Koordinaten eingibt.


    Und noch wichtiger: Darf es auch OpenStreetMap sein? Bei dem Google-Kram bekomme ich immer Würgereflex ;)


    Beim Umsetzen der Karte kann ich eventuell aushelfen. Ich trage nicht nur selber zu OpenSteetMap bei sondern habe auch schon Online-Karten gemacht.

  • Wie genau soll die endgültige Benutzerführung sein? Frage deshalb, weil ich mir nicht vorstellen kann, dass jemand wirklich händisch Koordinaten eingibt.


    Für sowas gibts beispielsweise GeoIP und/oder das GoogleMaps Api. Bestimmt gibts auch sowas von OSM.

    - Client1: Thermaltake DH 102 mit 7" TouchTFT * Debian Stretch/vdr-2.4.0/graphtft/MainMenuHooks-Patch * Zotac H55-ITX WiFi * Core i3 540 * 4GB RAM ** Zotac GT630 * 1 TB System HDD * 4 GB RAM * Harmony 900 * satip-Plugin

    - Client2: Alfawise H96 Pro Plus * KODI
    - Server: Intel Pentium G3220 * DH87RL * 16GB RAM * 4x4TB 3.5" WD RED + 1x500GB 2.5" * satip-Plugin
    - SAT>IP: Inverto iLNB

  • In Zeile 38 ist ein Fehler:

    Code
    marker.setPosition(new google.maps.LatLng(locationInput.value));


    locationInput.value liefert einen String zurück und keine zwei Float-Zahlen, die durch ein Komma getrennt sind. Du musst die Nutzereingabe locationInput.value wohl trimmen (Klammern an Anfang und Ende wegschneiden) und aufsplitten über locationInput.value.split(","), dann hast Du zwei Strings. Die Strings kannst Du mit parseFloat() konvertieren. Und dann zwei Parameter übergeben.


    Danke, das war der entscheidende Hinweis.
    Damit funktioniert es jetzt:


    Da kommen freilich noch ein paar Checks dazu, aber prinzipiell macht es jetzt das, was es soll.


    Klaus

  • Wie genau soll die endgültige Benutzerführung sein? Frage deshalb, weil ich mir nicht vorstellen kann, dass jemand wirklich händisch Koordinaten eingibt.


    Es könnte ja sein, daß jemand Javascript ausgeschaltet hat, aber seine Koordinaten von woanders her kennt und da einfach einfügt.


    Zitat


    Und noch wichtiger: Darf es auch OpenStreetMap sein? Bei dem Google-Kram bekomme ich immer Würgereflex ;)


    Ich bin froh, das mit Google-Maps relativ schnell und einfach hinbekommen zu haben ;-).


    Klaus

  • Die Koordinaten hole ich übrigens mit


    http://ip-api.com/csv


    Die „Genauigkeit“ lässt zum Wünschen übrig. Wenigstens erfasst Du alle große Rechenzentren/Knotenpunkten von allen ISPs.


    Albert

  • Die „Genauigkeit“ lässt zum Wünschen übrig. Wenigstens erfasst Du alle große Rechenzentren/Knotenpunkten von allen ISPs.


    Hauptsache mal blöd dahergefaselt... :(


    Ciao Louis

  • [quote='kls','index.php?page=Thread&postID=1235810#post1235810']
    Die „Genauigkeit“ lässt zum Wünschen übrig.


    Genauer wird es automatisch halt nicht gehen. Und außerdem biete ich ja die Karte an, über die man seinen Standort beliebig genau angeben kann - wenn man will. So manchem wird es ja ganz recht sein, wenn nur der nächstgrößere Ort (oder noch weiter weg) angegeben wird. Und mir ist der *genaue* Standort eh nicht so wichtig. Er geht eher um die Verbreitung an sich, welche Länder und so.


    Klaus

  • Na da brauchst Du aber keinen externen Anbieter für ungenaue Informationen ;) Da kannst Du auch GeoIP benutzen, z.B. libapache2-mod-geoip und entsprechende DB http://geolite.maxmind.com/dow…tabase/GeoLiteCity.dat.gz

    - Client1: Thermaltake DH 102 mit 7" TouchTFT * Debian Stretch/vdr-2.4.0/graphtft/MainMenuHooks-Patch * Zotac H55-ITX WiFi * Core i3 540 * 4GB RAM ** Zotac GT630 * 1 TB System HDD * 4 GB RAM * Harmony 900 * satip-Plugin

    - Client2: Alfawise H96 Pro Plus * KODI
    - Server: Intel Pentium G3220 * DH87RL * 16GB RAM * 4x4TB 3.5" WD RED + 1x500GB 2.5" * satip-Plugin
    - SAT>IP: Inverto iLNB

  • Wenn es dir um Infos um die Verteilung nach Ländern geht, dann wäre evtl. php web stat was für dich.


    Damit bekommt man eine passwortgeschützte Aufschlüsselung der Webzugriffe nach Ländern, Seiten usw. So sieht das z.B für w_scan aus.


    www.wirbel.htpc-forum.de/webstat.png

  • was machst du mit den Internetzugängen, die über ein Mobilsystem laufen ?


    Ich z.B. nutze Call&Surf Funk bei der Telekom, und das ist ein Mobilzugang. Alle Systeme, die meinen Standort anhand der IP ermitteln
    versagen in diesem Fall.



    Gruss Willi

    TV: Samsung SUHD UE55JS9090
    Sound: Onkyo TX-NR636 mit 5.1 Teufel Set


    VDR1: Reelbox AVG2 mit NAS QNAP 12 TB
    Streamingclient1: Intel NUC mit Openelec XBMC 12.2
    Streamingclient2: Arctic MC001


    VDR2 (Neu) Server auf Basis yavdr 0.5 (stable) headless Asus H97M-E Core i3-4130T 12Gb Ram 56Gb SSD 3TB WD-Red
    Client1 VDR yavdr0.5/Frodo ppa (stable) ASRock B85M-HDS Core i3-4130T 4Gb GT730 Zotac
    Client2 Arctic MC001 OpenElec XBMC 12.2


    VDR3 (testing) INTEL Nuc D34010WYK wahlweise mit Openelec 5.0.5 oder BM2LTS V2.61A
    Kodi 14.2 oder Kodi 15.0 Alpha

  • was machst du mit den Internetzugängen, die über ein Mobilsystem laufen ?


    Ich zitiere mal


    Zitat

    Und außerdem biete ich ja die Karte an, über die man seinen Standort beliebig genau angeben kann - wenn man will. So manchem wird es ja ganz recht sein, wenn nur der nächstgrößere Ort (oder noch weiter weg) angegeben wird

    - Client1: Thermaltake DH 102 mit 7" TouchTFT * Debian Stretch/vdr-2.4.0/graphtft/MainMenuHooks-Patch * Zotac H55-ITX WiFi * Core i3 540 * 4GB RAM ** Zotac GT630 * 1 TB System HDD * 4 GB RAM * Harmony 900 * satip-Plugin

    - Client2: Alfawise H96 Pro Plus * KODI
    - Server: Intel Pentium G3220 * DH87RL * 16GB RAM * 4x4TB 3.5" WD RED + 1x500GB 2.5" * satip-Plugin
    - SAT>IP: Inverto iLNB

  • Hauptsache mal blöd dahergefaselt... :(


    Was hast Du denn am Herzen mein Guter!?


    Genauer wird es automatisch halt nicht gehen.


    Nein, aber 150 km Differenz (Luftlinie) auf eine Karte!?


    So sieht das z.B für w_scan aus.


    Das sieht sogar sehr gut aus.


    Albert

  • Zitat

    Nein, aber 150 km Differenz (Luftlinie) auf eine Karte!?


    Zitat


    Was hast Du denn am Herzen mein Guter!?


    Wieso war doch berechtigt wie will man den genauen standort bei zb der telekom ermitteln?
    Das geht nicht !!!
    bei meinem Anschluss springt das durch ganz Hessen.
    das geht höchsten bei unitymedia und co die "starre Strukturen" haben und man immer gleich in Internet geroutet wird.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!