split.s: GoogleMaps-API: LonLat ermitteln?

Habe folgendes Mini-Map gebastelt:

  
    			function initialize() {  
      			if (GBrowserIsCompatible()) {  
        				var map = new GMap2(document.getElementById("map_canvas"));  
        				map.setCenter(new GLatLng(37.4419, -122.1419), 13);  
        				map.setUIToDefault();  
					GEvent.addListener(map, 'click', function () {  
						alert("  
					});  
      			}  
    			}  

Nun will ich in diesem alert() die LonLat-Koordinaten des Klicks ermitteln und anzeigen!
Weiss jemand wie ich sowas anstelle?
ich bin mit der Doku leider etwas überfordert :-(

  1. Hello,

    es gibt ein Beispiel von exakt dem, was du suchst. Schau in den Quelltext der Seite, dort findest du den entsprechenden Eventhandler.

    MfG
    Rouven

    --
    -------------------
    sh:| fo:} ch:? rl:( br:& n4:{ ie:| mo:} va:) js:| de:] zu:| fl:( ss:) ls:& (SelfCode)
    Death is nature's way of telling you to slow down.
    1. DANKE!

      Allerdings stimmen die Daten dort absolut nicht mit denen von der openDeoDB überein!
      Was ich suche ist eigentlich etwas anderes.
      Ich will, dass die Leute auf der Karte eines dieser roten Icon-Markierungen plazieren können. Anschließend will ich per AJAX die GeoKoordinaten, also Lon und Lat, an meinen Server übertragen. Dadurch soll eine Umkreissuche realisierbar werden.
      Serverseitig ist alles fertig. Aber ich komme absolut nicht mit Javascript zurecht, dabei brauche ich nur diese eine Funktion.

      1. Hallo split.s,

        hast du dir das Beispiel denn mal angesehen: hier wird bei Klick der Wert von "map.fromLatLngToDivPixel(latlng)" im Infofenster ausgegeben, also die Pixelkoordinaten im angezeigten Kartenfenster. Lass dir mal "latlng" direkt ausgeben, dann siehst du, dass es die Geokoordinaten sind.

        Gruß, Jürgen

        1. Verstehe, hab ich genacht und funktionieren tut es auch.

          Wie bekomme ich denn dieses komische infofenster durch diesen roten Marker ersetzt? Es gibt ja diese roten Tropfenförmigen Teile die man irgendwo reinstellen kann.

          1. Hallo split.s,

            in diesem Beispiel werden Marker gesetzt. Du musst in dem anderen Beispiel nur das Infofenster durch die Marker ersetzen:

            map.openInfoWindow(latlng, myHtml);    // Infofenster
              map.addOverlay(new GMarker(latlng));   // Marker

            Gruß, Jürgen

            1. Danke!

              Aber jetzt bleibt überall wo ich mal geklickt habe ein Marker zurück! Ich will doch nur den Marker dort haben wo ich zuletzt geklickt habe.
              Ich brauche für eine Umkreissuche nur die Koordinaten des Klicks. Aber wenn er falsch geklickt hat und nochmal klickt, stehen dort zwei von den Dingern rum!

              1. Hello,

                Aber jetzt bleibt überall wo ich mal geklickt habe ein Marker zurück! Ich will doch nur den Marker dort haben wo ich zuletzt geklickt habe.

                du hättest es gerne mundgerecht serviert habe ich den Eindruck...ist es nicht schneller, das selbst aus den Beispielen bzw. der API herauszufischen?
                GMap2.removeOverlay

                MfG
                Rouven

                --
                -------------------
                sh:| fo:} ch:? rl:( br:& n4:{ ie:| mo:} va:) js:| de:] zu:| fl:( ss:) ls:& (SelfCode)
                Let Bygones Be Bygones  --  Robert Pitscottie: "Chronicles of Scotland"
                1. Und wie setze ich ein? Auf removeOverlay bin ich auch schon gestoßen. Soll ich das jetzt da rein schreiben oder wie?

                  map.removeOverlay();
                  map.addOverlay(new GMarker(latlng));

                  ???

                  1. Hello,

                    map.removeOverlay();

                    hast du das mal in DER VON MIR VERLINKTEN(!) Seite nachgeschlagen? Die Methode kriegt einen Parameter. Oh Wunder, den des Overlays das entfernt werden soll. Was willst du entfernen? Deinen vorherigen Marker. Merk ihn dir, übergib ihn ihr.

                    MfG
                    Rouven

                    --
                    -------------------
                    sh:| fo:} ch:? rl:( br:& n4:{ ie:| mo:} va:) js:| de:] zu:| fl:( ss:) ls:& (SelfCode)
                    "I wish it need not have happened in my time" - "So do I, and so do all who live to see such times. But that is not for them to decide. All we have to decide is what to do with the time that is given us."  --  J.R.R. Tolkien: "The Lord Of The Rings: The Fellowship Of The Ring"
                    1. Doch klar! Aber da steht ja null praxiswissen.
                      Was hat denn z.B. removeOverlay überhaupt mit meinem Problem zu tun?

                      Mal ein beispiel:

                      ...
                      var marker new GMarker(latlng);
                      map.addOverlay(marker);
                      ...

                      Das löschen muss doch bereits erfolgen, BEVOR dieser neuer marker überhaupt hinzugefügt wird.
                      Das heisst "marker" existiert ja zu dem Zeitpunkt noch garnicht, weil den letzten Marker will ich ja garnicht löschen! Im Gegenteil: Der letzte ist der einzige der mich interessiert!

                      Meine Frage ist folgende: Auf welches Element/Objekt muss ich removeOverlay() anwenden?

                      1. Hello,

                        var marker new GMarker(latlng);

                        Dann deklariere deine Variable marker global.
                        BEVOR du nun den bestehenden marker mit dem neuen überschreibst entfernst du den im vorherigen Schritt gemerkten.

                        falls (marker existiert)
                           entferne marker
                        marker = erstelle neuen marker
                        fuege marker der map hinzu

                        MfG
                        Rouven

                        --
                        -------------------
                        sh:| fo:} ch:? rl:( br:& n4:{ ie:| mo:} va:) js:| de:] zu:| fl:( ss:) ls:& (SelfCode)
                        Let Bygones Be Bygones  --  Robert Pitscottie: "Chronicles of Scotland"
                        1. Ah jetz hab ich verstanden! Funktioniert sogar ;)
                          Danke und schönes Wochenende!

                        2. Da hab ich noch ne Frage!

                          addListener gibt ja die Variable (?) latlng zurück.
                          Wenn ich jetzt latlng.match() ausführen will sagt er mir, dass latlng.match() keine Funktion ist!
                          Verstehe das nicht! Kann es sein, dass latlng kein String ist? Aber was bitte ist denn (7.993828193,38.3827737) sonst wenn kein String?

                          1. Hello,

                            addListener gibt ja die Variable (?) latlng zurück.

                            Nein, nein, nein,...
                            Bei addListener bewegst du dich im Umfeld von GEvent und bekommst einen GEventListener, mit dem du allerdings wenig anfangen kannst, aber in Wahrheit auch nicht willst, latlng ist schließlich nur ein Parameter für diesen Listener.

                            Wie du der Referenz von GMap, Abschnitt Coordinate Transformations, entnehmen kannst, arbeitest du an dieser Stelle mit einem GLatLng bzw. unter Umständen mit einem GPoint. Für beide existieren hervorragende getter/setter/toString-Methoden.

                            MfG
                            Rouven

                            --
                            -------------------
                            sh:| fo:} ch:? rl:( br:& n4:{ ie:| mo:} va:) js:| de:] zu:| fl:( ss:) ls:& (SelfCode)
                            Death is nature's way of telling you to slow down.
              2. Hallo split.s,

                also ich würde auch sagen: den Steigbügel haben wir dir gehalten, aufsteigen musst du schon selbst.

                Gruß, Jürgen