Punkte auf einer Deutschlandkarte markieren

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Punkte auf einer Deutschlandkarte markieren

    Hallo!
    Ich möchte mich erstmal dafür entschuldigen, dass ich auf phpforum.de die gleiche Frage schon gestellt habe. Aber da habe ich keine Lösung meines Problems gefunden und selber komme ich auch nicht drauf.

    Zu meinem Problem:
    http://www.virtual-meetings.de/rebuild/distance.html
    Wenn ihr bei diesem Link für beide PLZs 88400 (Biberach in BW) eingebt, erscheint der Punkt in Rheinland-Pfalz.

    Was genau an meiner Rechnung falsch ist, weiß ich leider nicht. Ich verwende geodb zur Ermittlung der Koordinaten.



    Hier mal mein bisheriger Code inkl. Debuggingausgaben:

    PHP-Code:
    <?php 
    $k_la1 
    $row->lon;
    $k_br1 $row->lat;

    $dif_lon 17.1 2.5833333;
    $dif_lat 55.0248003984965 45.8333;  

    $fakt_lon 401/$dif_lon;
    $fakt_lat 297/$dif_lat

    $posX = ($k_br1*$fakt_lon)-(45*$fakt_lon);
    $posY = ($k_la1*$fakt_lat)-(2.5833333*$fakt_lat);  
    ?>

    <b>Debugging</b><br />
    <?php
    echo "dif_lon ".$dif_lon."<br />";
    echo 
    "dif_lat ".$dif_lat."<br />";
    echo 
    "fakt_lon ".$fakt_lon."<br />";
    echo 
    "fakt_lat ".$fakt_lat."<br />";
    echo 
    "posX ".$posX."<br />";
    echo 
    "posY ".$posY."<br />";
    echo 
    "lat_des_ortes ".$k_br1."<br />";
    echo 
    "lon des ortes ".$k_la1."<br />";

    ?>
    erzeugt folgende Ausgabe:

    Debugging
    dif_lon 14.5166667
    dif_lat 9.1915003985
    fakt_lon 27.6234212913
    fakt_lat 32.3124612004
    posX 85.6547047402
    posY 233.602185368
    lat_des_ortes 48.1008
    lon des ortes 9.81281
    Ich habe mich schon gefragt, ob das vielleicht von der Erdkrümmung kommen kann, allerdings kann ich mir da keine so extrem grossen Abweichungen vorstellen.

    Oder ist etwa meine komplette Vorgehensweise verkehrt?

    Seggl-hoch-drei
    Tempim.de - Dein kostenloser Bildhoster
    Tipps und Tricks für Webmaster

  • #2
    Hmm...
    hat auch keiner ne Ahnung, woran es liegen könnte?
    Ich komm nicht weiter!
    Tempim.de - Dein kostenloser Bildhoster
    Tipps und Tricks für Webmaster

    Kommentar


    • #3
      Warum benutzt du nicht die GoogleMaps-Api?
      Dort ist sowohl Karte, als auch GeoRequest enthalten.

      AUßerdem gibts dazu auch ein schönes PHP-Framework:
      http://gmapper.ajax-info.de/

      Kommentar


      • #4
        Hmm...
        Das geht nicht, meine restliche Seite baut auf die geodb auf.
        Tempim.de - Dein kostenloser Bildhoster
        Tipps und Tricks für Webmaster

        Kommentar


        • #5
          Hmm, soweit ich es beim Überfliegen sehen kann stimmt deine Umrechnungsformel von geographisch nach Pixeln einfach nicht, oder? Nach meinem Test stimmt keine einzige Koordinate, es ist also nicht nur Biberach falsch sondern alle.

          Da muß OpenGeoDB doch vernünftige Umrechnungsmethoden anbieten, oder? Ich kenn mich da allerdings nicht aus

          Kommentar


          • #6
            Also ich hab mir das so gedacht:

            die niedrigste Koordinate, die ich habe und die höchste, von denen nehme ich die LON und LAT-Werte und bilde die Differenz. Dann habe ich doch die Breite und Höhe von D in lat und lon.

            dann schaue ich, wieviele pixel ein lan und ein lat hat (dreisatz) und rechne entsprechend hoch.
            Tempim.de - Dein kostenloser Bildhoster
            Tipps und Tricks für Webmaster

            Kommentar


            • #7
              Und du hast einen Testort, bei dem das bereits aufgeht?

              Kommentar


              • #8
                nein, leider nicht....
                und ich hab auch keine ahnung, woran es liegt.

                könnte es sein, dass in der geodb nicht nur koords von D gespeichert sind? das würde einiges erklären
                Tempim.de - Dein kostenloser Bildhoster
                Tipps und Tricks für Webmaster

                Kommentar


                • #9
                  könnte es sein, dass in der geodb nicht nur koords von D gespeichert sind? das würde einiges erklären
                  Versteh ich nicht, warum?
                  Bei der OpenGeoDB gibts in den Examples eine eigene Kartenklasse, vielleicht lohnt es sich in die einen Blick reinzuwerfen?

                  Kommentar


                  • #10
                    Aaaalso,
                    beim googlen bin ich auf diesen Thread gestossen:
                    http://www.traum-projekt.com/forum/sitemap/t-68402.html

                    Und mit diesem Code gehts auch schon relativ genau:

                    PHP-Code:
                    $range_minX 5.9727062460994;
                    $range_maxX 14.984191213722;
                    $range_minY 47.375413747749;
                    $range_maxY 55.05749480

                    $karte_groesse_x 594;
                    $karte_groesse_y 802

                    $posXfloor( ($k_la1 $range_minX) * ($karte_groesse_x / ($range_maxX $range_minX)));
                    $posYfloor( ($k_br1 $range_maxY) * ($karte_groesse_y / ($range_minY $range_maxY))); 
                    Zu sehen hier: http://www.virtual-meetings.de/rebuild/distance.html

                    Wenn ihr 14199 in beide Felder eingebt, seht ihr den Punkt für Berlin. Er liegt aber noch nicht 100% genau. Woran kann denn das jetzt noch liegen?

                    Bei der OpenGeoDB gibts in den Examples eine eigene Kartenklasse, vielleicht lohnt es sich in die einen Blick reinzuwerfen?
                    ich schau mal

                    EDIT: Die verwenden das gleiche Vorgehen wie ich. (Nur andere ranges.... die von denen verwendeten passen allerdings nicht auf meine karte):
                    $this->min = array('x' => 9, 'y' => 55);
                    $this->max = array('x' => 11, 'y' => 54);

                    meine sind genauer, denke ich, oder?
                    Zuletzt geändert von Seggl-hoch-drei; 12.04.2008, 12:49.
                    Tempim.de - Dein kostenloser Bildhoster
                    Tipps und Tricks für Webmaster

                    Kommentar


                    • #11
                      meine sind genauer, denke ich, oder?
                      Na - wenn sie stimmen ?
                      Wirst halt mit den Ranges rumspielen müssen, bis sie perfekt passen, oder? Ich würde mir einen grenznahen oder sonstwie einfach erkennbaren kleinen Ort suchen und mir dessen Koordinaten mit Google Maps rausziehen.

                      Kommentar


                      • #12
                        das erscheint mir fast unmöglich.....

                        ich bräuchte eigntlich die koordinaten von
                        dem nördlichsten punkt von D
                        dem südlichsten punkt von D
                        dem westlichsten punkt von D
                        dem östlichsten punkt von D

                        per google konnte ich nur den südlichsten Punkt finden.
                        Kennt zufällig einer die anderen? :-D
                        Tempim.de - Dein kostenloser Bildhoster
                        Tipps und Tricks für Webmaster

                        Kommentar


                        • #13
                          Hab die Werte noch gefunden, in mein Skript eingefügt und das ganze auf AJAX umgebaut:

                          Hier ist das Ergebnis auf meinem neuen Server:
                          http://virtual-meetings.de.dd1328.ka.../distance.html

                          Ich habe aber noch ein kleines AJAX-Problem mit dem IE.
                          Soll ich einen neuen Thread dazu aufmachen?
                          (IE macht nur 1x mit, dann hat er keine Lust mehr)

                          Seggl
                          Tempim.de - Dein kostenloser Bildhoster
                          Tipps und Tricks für Webmaster

                          Kommentar


                          • #14
                            Mach nen neuen Thread auf, das ist besser.

                            Kommentar


                            • #15
                              Hmm wie war das nochmal..
                              Ich glaub, dass man beim IE das Callback nach jedem Aufruf neu zuweisen muss.

                              Kommentar

                              Lädt...
                              X