google maps geocoding in sql speichern

sandroP

Erfahrenes Mitglied
Hallo,

Ich möchte die Kooridinaten aus der Google Maps geocoding Funktion in
eine SQL Datenbank speichern.
- Wie bekomme ich diese aus dem Javascript?

Code:
    function showAddress() {  
    var address = '88353 Kisslegg, Hauptstrasse';
     
     geocoder.getLatLng(    
       address,    
       function(point) 
       );
      }

In Point müsste ja nun ltd und lng enthalten sein.
Wie bekomme ich nun ltd und lng in eine eine Variable, so daß ich diese
mittels php in die sql schreiben kann?
 
Moin Sandro,

eine Variable hast du ja schon(point)...du benötigst wahrscheinlich einen String, da könntest du bspw.
point.toUrlValue() nehmen.
 
Ich steh gerade voll auf dem Schlauch!

ich brauche was in dieser Richtung:

$laenge = pointx
$breite = pointy
 
Das:
Code:
laenge = point.lng();
breite = point.lat();
?

Das müsstest du halt für PHP verfügbar machen, bspw. indem du es per AJAX an ein PHP-Skript sendest.
 
ja genau, das brauche ich.

Es gibt da nur 3 Probleme!
1.) Ich habe von Javascript keine Ahnung
2.) von Ajax gar kein Ahnung
3.) und von PHP gefährliches Halbwissen

Wie bekomme ich das verfügbar gemacht? bzw wie schicke ich das per
ajax?

Hast mir bitte nen tipp oder ne Seite wo ich mich schlau lesen kann?
 
Das ginge so:
Code:
var AJAX=GXmlHttp.create();
AJAX.open('POST','phpskript.php',true);
AJAX.send('lat='+point.lat()+'&lng='+point.lng());

In phpskript.php hast du dann die Werte über $_POST['lat'] und $_POST['lng'] verfügbar.
 
ICH bin zu doof!

es geht halt einfach nicht...:suspekt:
Code:
<script type="text/javascript">


    //<![CDATA[

   var map = null;
    var geocoder = null;

    function load() {
      if (GBrowserIsCompatible()){
        map = new GMap2(document.getElementById("map"));
		map.setMapType(G_HYBRID_MAP);
        
        geocoder = new GClientGeocoder();
      }
    }
    
    function showAddress() {  
    var address = '<?PHP
$kundennummer = isset($_GET["kundennummer"]) ? $_GET["kundennummer"] : null;
include "zugang/inc.php";
$sqlab = "SELECT * FROM gastgeber";
$sqlab .= " WHERE kundennummer = '".$kundennummer."'";
$res = mysql_query($sqlab);
   while ($zeile = mysql_fetch_assoc($res))
    echo "$zeile[strasse] $zeile[hausnr], $zeile[plz] $zeile[aort], $zeile[land]" 
	?>';
     
     geocoder.getLatLng(    
       address,    
       function(point) 
	   
	   {      
          
 var AJAX=GXmlHttp.create();
AJAX.open('POST','geo1.php',true);
AJAX.send('lat='+point.lat()+'&lng='+point.lng()); 
    
          
        }  
       );
      }    
     
    //]]>
    </script>

</head>

<body onload="load(); showAddress();"onunload="GUnload();" >


	<? 
	$laenge = isset($_POST["lat"]) ? $_POST["lat"] : null;
	$breite = isset($_POST["lng"]) ? $_POST["lng"] : null;
	echo "$laenge <br> $breite";
	?>


  </body>

Hallo,

so langsam bekomme ich Eckige Augen.
Ich habe in dem obigen Code jetzt diverses versucht, aber mein
monitor bleibt leider leer.

Hilfe!
 
Naja.... mal den zeitlichen Ablauf dessen, was da vor sich geht, sollte klar sein, warum du nichts siehst.

JS arbeitet clientseitig, also mit dem, was PHP ihm liefert.

Du kannst nicht erwarten, dass PHP nach Auslieferung des Dokumentes noch auf clientseitige Aktionen reagiert.
Dass aber sehr wohl eine POST-Anfrage per AJAX gesendet wird(falls der ganze Code da hinhaut), könntest du anhand deiner Logfiles prüfen.

Aber so wie es aussieht, brauchst du da AJAX/Javascript überhaupt nicht.
Du benötigst ja keine Adresseingabe vom Clienten, also kannst du gleich per PHP bei Google anfragen und dir so einen Schritt sparen.

Hier mal ne simple Klasse dafür:
PHP:
<?php
 class GM_geocoder
 {
  var $key;
  var $google='http://maps.google.com/maps/geo';  
  
  function __construct($key)
  {
    $this->key=$key;
  }
  
  function request($adress,$callback='cbf',$output='csv',$sensor=false)
  {
    $data=array(
                'key'=>$this->key,
                'q'=>$adress,
                'output'=>$output,
                'sensor'=>($sensor)?'true':'false'
               );
               
    $url=$this->google.'?'.http_build_query($data, '','&');
    
    if($response=@file_get_contents($url))
    {
      return $this->{$callback}($response,$url);
    }
    else
    { 
      return $this->error($url);
    }
    
  }
  
  function cbf($strData,$url)
  {
    $arrData=explode(',',$strData);
    
    if($arrData[0]==200 && count($arrData)==4)
    {
      return(array('lat'=>$arrData[2],'lng'=>$arrData[3]));
    }
    
    return $this->error($url);
  }
  
  function error($url)
  {
    return 'Anfrage an ['.$url.'] fehlgeschlagen';
  }
  
 }
 
 //Objekt instanziieren, als Argument wird der Google-Key erwartet
 $geocoder=new GM_geocoder('deinKey');
 
 //mal testen                       
 var_export($geocoder->request('88353 Kisslegg, Hauptstrasse'));
 
 
?>

GM_geocoder::request() liefert im Erfolgsfall einen Array mit lat+lng, andernfalls eine Fehlermeldung.
 
Vielen Dank erst mal für die Antwort,

leider verstehe ich nur nicht wie ich damit weiter machen soll.
liegt vermutlich auch an meinem eingeschränkten wissen.

:confused:
 
Eine voll funktionierende Alternative habe ich hier:
PHP:
$ad = urlize($strasse).", ".$postleitzahl." ".urlize($ort).", Germany";
$f = file_get_contents('http://maps.google.com/maps/geo?q='.urlencode($ad).'&output=csv&key='.$google_api_key);
$koords = explode(",",$f);
if($koords[2]!=0 && $koords[3] !=0) {
    $lat = $koords[2];
    $lon = $koords[3];
} else {
    $lat = "";
    $lon = "";
}

function urlize($str){
    return urlencode(strtr(strtolower($str),array('.'=>'', ')'=>'', '('=>'', ' '=>'-','ü'=>'ue','ö'=>'oe','ä'=>'ae','ß'=>'ss','/'=>'-','&'=>'und','@'=>'(_at_)')));
}
 

Neue Beiträge

Zurück