Micha89: Karte zentrieren

Hallo,

ich binde eine GoogleMap Karte wie folgt ein:

  
          <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  
  }  
  ?>  
  
        }  
    }  
  
    function showAddress(address)  
    {  
        if (geocoder)  
        {  
            geocoder.getLatLng(  
                 address  
                ,function(point)  
                    {  
                        if (!point)  
                        {  
                            console.log(address + " not found");  
                        }  
                        else  
                        {  
                            map.setCenter(point, 5);  
                            var marker = new GMarker(point);  
                            map.addOverlay(marker);  
   //                         marker.openInfoWindowHtml(address);  
                        }  
                    }  
                );  
        }  
    }  
window.addEvent('domready', load);  
window.addEvent('unload', GUnload);  
    //]]>  
    </script>  
<div style="width: 235px; height: 327px; overflow: hidden;">  
              <div id="googlemape" style="width: 235px; height: 327px;"></div>  
            </div>  

das ganze sieht dann so aus:

http://www3.pic-upload.de/20.09.09/b2onhbrjpv.jpg

sollte aber so aussehen:

http://www3.pic-upload.de/20.09.09/thgza2q43lwg.jpg

ich hoffe jemand hat eine Idee, wie ich das hinbekomme.

  1. Hallo Micha89,

    du ermittelst aus "lat" und "lon" die größten und kleinsten Werte latmin, latmax, lonmin und lonmax. Mit diesen Werten kannst du die Karte dann entsprechend zentrieren und zoomen.

    ~~~javascript 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);

      
      
      
    Gruß, Jürgen  
    
    
    1. Hallo Jürgen,

      hab es jetzt mal so gemacht:

        
                <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);  
        
       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);  
        
                                  <?php  
        while($row = mysql_fetch_object($ergebnis1))  
      {  
        	?>  
      showAddress('<?php print $row->strasse; ?>, <?php print $row->plz; ?> <?php print $row->ort; ?>');  
            <?php  
        }  
        ?>  
        
              }  
          }  
        
          function showAddress(address)  
          {  
              if (geocoder)  
              {  
                  geocoder.getLatLng(  
                       address  
                      ,function(point)  
                          {  
                              if (!point)  
                              {  
                                  console.log(address + " not found");  
                              }  
                              else  
                              {  
                                  map.setCenter(point, 5);  
                                  var marker = new GMarker(point);  
                                  map.addOverlay(marker);  
         //                         marker.openInfoWindowHtml(address);  
                              }  
                          }  
                      );  
              }  
          }  
      window.addEvent('domready', load);  
      window.addEvent('unload', GUnload);  
          //]]>  
          </script>  
      
      

      nun habe ich zwar schön die Karte in der Mitte, aber meine Pointer sind weg :-( was habe ich denn falsch gemcht?

      1. Hallo Micha89,

        die Min- und Max-Werte fallen nicht vom Himmel, die musst du schon aus den Koordinaten der Adresspunkte ermitteln.

        <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);

        warum rätst du die Mitte?

        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);

        wo wurden die Min- und Max-Werte ermittelt?

        <?php
          while($row = mysql_fetch_object($ergebnis1))
        {
           ?>
        showAddress('<?php print $row->strasse; ?>, <?php print $row->plz; ?> <?php print $row->ort; ?>');
              <?php
          }
          ?>

        ich blicke jetzt durch den PHP-Javascript-Mischmasch nicht richtig durch, aber ich glaube, hier kann getBounds und setCenter hin.

        }
            }

        function showAddress(address)
            {
                if (geocoder)
                {
                    geocoder.getLatLng(
                         address
                        ,function(point)
                            {
                                if (!point)
                                {
                                    console.log(address + " not found");
                                }
                                else
                                {
                                    map.setCenter(point, 5);

        warum wird um jeden Punkt zentriert?

        var marker = new GMarker(point);
                                    map.addOverlay(marker);
           //                         marker.openInfoWindowHtml(address);

        hier kennst du die Koordinaten: Point! Lese hier den lat und lon-Wert aus und ermittle die Max- und Min-Werte. (point.lat und point.lng)

        }
                            }
                        );
                }
            }
        window.addEvent('domready', load);
        window.addEvent('unload', GUnload);
            //]]>
            </script>

        
        >   
        > nun habe ich zwar schön die Karte in der Mitte, aber meine Pointer sind weg :-( was habe ich denn falsch gemcht?  
          
        u.A: keinen Blick in die Fehlerkonsole des Browsers geworfen und meinen Codeschnippsel eingebaut, ohne zu verstehen, was da passiert. Auch solltest du mal einen Blick in die [Doku](http://code.google.com/intl/de/apis/maps/documentation/reference.html) werfen.  
          
          
          
        Gruß, Jürgen  
        
        
        1. Hallo,

          danke dir, hab es hinbekommen.

          Gruß,
          Micha