Micha89: Google Maps Maker verlinken

Guten Abend,

ich sollte nochmals eure Hilfe haben. Habe folgenden Code:

Mein PHP Code:
---------------------

  
<?php  
  
  error_reporting(E_ALL);  
  
  $abfrage1 = "SELECT strasse, plz, ort, id FROM firmen LIMIT 8";  
  $ergebnis1 = mysql_query($abfrage1);  
  
  $Key = '#####';  
  
  ?>  

Mein JS Code:
--------------------

  
          <script src="http://maps.google.com/maps?file=api&amp;v=2&amp;key=<?php print $Key; ?>" type="text/javascript"></script>  
          <script type="text/javascript">  
    //<![CDATA[  
  
    var map;  
    function load()  
    {  
        if (GBrowserIsCompatible())  
        {  
map = new GMap2(document.getElementById("googlemape"));  
            geocoder = new GClientGeocoder();  
            point = new GLatLng(50.203169,10.138674);  
  
    //Die Karte wird bei diesem Punkt zentriert  
    map.setCenter(point, 5);  
  
  
                            <?php  
  while($row = mysql_fetch_object($ergebnis1))  
{  
  	?>  
showAddress('<?php print $row->strasse; ?>, <?php print $row->plz; ?> <?php print $row->ort; ?> <?php print $row->id; ?>');  
      <?php  
  }  
  ?>  
  
        }  
    }  
  
    function showAddress(address)  
    {  
        if (geocoder)  
        {  
            geocoder.getLatLng(  
                 address  
                ,function(point)  
                    {  
                        if (!point)  
                        {  
                            console.log(address + " not found");  
                        }  
                        else  
                        {  
                            var marker = new GMarker(point);  
                           // map.addOverlay(marker);  
 map.addOverlay(marker);  
  
     GEvent.addListener(marker, "click", function() {  
       window.location.href = "<?php print $row->id; ?>";  
     });  
 zoom = map.getBoundsZoomLevel(new GLatLngBounds(new GLatLng(latmin,lonmin),new GLatLng(latmax,lonmax))); // sw, ne  
 map.setCenter(new GLatLng((latmax+latmin)/2,(lonmax+lonmin)/2), zoom);  
  
                        }  
                    }  
                );  
        }  
    }  
window.addEvent('domready', load);  
window.addEvent('unload', GUnload);  
    //]]>  
    </script>  

Mein HTML Code:
--------------------

  
<div style="width: 235px; height: 327px; overflow: hidden;">  
              <div id="googlemape" style="width: 235px; height: 327px;"></div>  
</div>  

bis jetzt habe ich das so, dass die Maker alle auf der Karte dagestellt werden, das klappt auch, jetzt würde ich die gerne noch verlinken, dieses wollte ich so machen:

  
window.location.href = "<?php print $row->id; ?>";  

leider habe wird mir aber die ID nicht angezeigt. Was mache ich denn an meinem Code falsch? Ich hoffe ich kann das so verlinken, aber wenn ich mir andere Seite ansehe, die haben das ja auch. Danke schon mal für eure Hilfe.

Gruß,
Micha

  1. window.location.href = "<?php print $row->id; ?>";

    das row-id wird in diesem Kontext nicht mehr gültig sein, es ist nur in deiner while()-Schleife gültig. Ausserdem weisst du wenn überhaupt nur einem Marker einen href-Wert zu.

    Gruss
    susi

    1. Ausserdem weisst du wenn überhaupt nur einem Marker einen href-Wert zu.

      Vergiss das bitte, hatte mir den code nicht richtig angeguckt. Also in der Funktion showAddress() darfst du natürlich nicht auf die PHP-Variable row referenzieren.

      susi

    2. Hallo,

      das row-id wird in diesem Kontext nicht mehr gültig sein, es ist nur in deiner while()-Schleife gültig. Ausserdem weisst du wenn überhaupt nur einem Marker einen href-Wert zu.

      danke für deine Antwort, aber dann frage ich mich, wie komme in unten beim Maker noch an die ID? Das muss doch bestimmt irgendwie gehen oder?

      Gruß,
      Micha

  2. hi,
    poste doch mal den Quellcode aus dem Browser, also nachdem es vom Server zurückgesandt wurde (und somit das PHP bereits interpretiert wurde). Dann wird es vermutlich deutlicher

    1. Guten morgen,

      wenn ich den Code aus dem Browser nehme, dann sieht es so aus:

        
      //<![CDATA[  
        
          var map;  
          function load()  
          {  
              if (GBrowserIsCompatible())  
              {  
      map = new GMap2(document.getElementById("googlemape"));  
                  geocoder = new GClientGeocoder();  
                  point = new GLatLng(50.203169,10.138674);  
        
          //Die Karte wird bei diesem Punkt zentriert  
          map.setCenter(point, 5);  
        
        
            showAddress('Straße, PLZ Ort 1');  
            showAddress('Straße, PLZ Ort 2');  
            showAddress('Straße, PLZ Ort 3');  
            showAddress('Straße, PLZ Ort 4');  
            showAddress('Straße, PLZ Ort 5');  
            showAddress('Straße, PLZ Ort 6');  
        
              }  
          }  
        
          function showAddress(address)  
          {  
              if (geocoder)  
              {  
                  geocoder.getLatLng(  
                       address  
                      ,function(point)  
                          {  
                              if (!point)  
                              {  
                                  console.log(address + " not found");  
                              }  
                              else  
                              {  
                                  var marker = new GMarker(point);  
                                 // map.addOverlay(marker);  
       map.addOverlay(marker);  
        
           GEvent.addListener(marker, "click", function() {  
             window.location.href = "";  
           });  
       zoom = map.getBoundsZoomLevel(new GLatLngBounds(new GLatLng(latmin,lonmin),new GLatLng(latmax,lonmax))); // sw, ne  
       map.setCenter(new GLatLng((latmax+latmin)/2,(lonmax+lonmin)/2), zoom);  
        
                              }  
                          }  
                      );  
              }  
          }  
      window.addEvent('domready', load);  
      window.addEvent('unload', GUnload);  
          //]]>  
        
      
      

      das hier:

        
      showAddress('Straße, PLZ Ort 1');  
      
      

      habe ich wie man sehen kann 6 mal in der Datenbank. Ich selber habe hier jetzt Straße, PLZ und Ort geschrieben, das habe ich wegen dem Datenschutz gemacht, will hier ja keine Adressen veröffentlichen :-) die Zahlen hinter dem Ort sind die IDs. Es sind 6 Einträge, weil ich gerade 6 Einträge in der Datenbank stehen habe.

      Gruß,
      Micha

      1. hi,

        du musst in der Funktion showAdress()

        window.location.href

        den Wert zuweisen, den du der Funktion showAdress() übergibst. Da du nur die ID übergeben willst, musst du halt den Parameter entsprechend ausplitten (da er ja jetzt noch so aussieht: Straße, PLZ Ort 1 )

        window.location.href= substr(adress,1,-1) //pseudocode

        1. Hallo,

          du musst in der Funktion showAdress()

          window.location.href

          den Wert zuweisen, den du der Funktion showAdress() übergibst. Da du nur die ID übergeben willst, musst du halt den Parameter entsprechend ausplitten (da er ja jetzt noch so aussieht: Straße, PLZ Ort 1 )

          window.location.href= substr(adress,1,-1) //pseudocode

          vielen dank für deine Hilfe, aber wenn ich ehrlich bin, dann verstehe ich das gerade überhaupt nicht. Alle meine Versuche bleiben leider erfolglos. Oder wenn ich mal was erreiche, dann habe ich überall immer die gleiche ID drin :-( ich hoffe du kannst mir nochmals helfen.

          Gruß,
          Micha

  3. Hallo,

    ich komme hier einfach nicht weiter :-( hat einer denn noch eine Idee?

    Gruß,
    Micha