Adressen auf Google Maps anzeigen

DanAlexa

Grünschnabel
Hallo,

ich versuche mich im Moment daran, Adressen aus einer Datenbank auf Google Maps anzeigen zu lassen. Allerdings komme ich nicht so recht weiter, trotz Recherche.
Aktuell habe ich einfach nur eine kleine Testdatenbank mit einer Tabelle, die Name, Adresse sowie Koordinaten speichert, dies wandle ich um in ein Json-Format und übergebe das dann einer geocode-Funktion.
Das funktioniert auch alles ohne Fehlermeldungen.
Ich dachte, daß ich den return-Wert meiner geocode-Funktion einer initMap-Funktion (in java script, ich hatte mich da von einem Tutorial anleiten lassen) übergeben kann, aber das geht so nicht (die Fehlermeldung in der console: uncaught exception: InvalidValueError: initMap is not a function) .

Da ich in der Thematik aber auch recht neu bin, ist mir nicht klar, wie ich es machen soll/muss und wäre daher für eine kleine Hilfe sehr dankbar.
Aktuell sieht mein Code so aus:

PHP:
//connect to database
$con = mysqli_connect("", "", "", "") or die ("Error " . mysqli_error($con));

//fetch the table rows from table
$sql = "select address from markers";
$result = mysqli_query($con, $sql) or die ("Error in Selecting" . mysqli_error($con));

//create an array
$address = array();
while($row = mysqli_fetch_assoc($result)) {
   $address[] = $row;
}

//json
$addressJson =  json_encode($address);

//geocoding
function geocode($addressJson)
{

   // url encode the address
   $address = urlencode($addressJson);

   // google map geocode api url
   $url = "https://maps.google.com/maps/api/geocode/json?sensor=false&address={$address}";

   // get the json response
   $resp_json = file_get_contents($url);

   // decode the json
   $resp = json_decode($resp_json, true);

   // response status will be 'OK', if able to geocode given address
   if ($resp['status'] == 'OK') {

       // get the important data
       $lati = $resp['results'][0]['geometry']['location']['lat'];
       $longi = $resp['results'][0]['geometry']['location']['lng'];
       $formatted_address = $resp['results'][0]['formatted_address'];

       // verify if data is complete
       if ($lati && $longi && $formatted_address) {

           // put the data in the array
           $data_arr = array();

           array_push(
               $data_arr,
               $lati,
               $longi,
               $formatted_address
           );

           return $data_arr;

       } else {
           return false;
       }

   } else {
       return false;
   }
}

?>


<html>
<head>
   <meta name="viewport" content="initial-scale=1.0, user-scalable=no">
   <meta charset="utf-8">
   <title>Simple markers</title>
   <style>

       #map {
           height: 100%;
       }

       html, body {
           height: 100%;
           margin: 0;
           padding: 0;
       }
   </style>
</head>
<body>
<div id="map"></div>
<script>
   //Display the map
   function initMap() {
       var myLatLng = {<?php $data_arr; ?>};


       var map = new google.maps.Map(document.getElementById('map'), {
           zoom: 4,
           center: myLatLng
       });

       var marker = new google.maps.Marker({
           position: myLatLng,
           map: map,
           position: new google.maps.LatLng(<?php echo $latitude; ?>, <?php echo $longitude; ?>)
       });
   }
</script>
<script async defer
       src="https://maps.googleapis.com/maps/api/js?key=KEY&callback=initMap">
</script>
</body>
</html>
 
Ich habe keine Kenntnisse über das ganze Drumherum mit Google Maps aber dieses kommt mir merkwürdig vor:
Code:
var myLatLng = {<?php $data_arr; ?>};
Du willst doch das PHP-Array $data_arr in ein Javascript-Objekt einbetten und an die Variable myLatLng übertragen. Dann musst Du das Array JSON-codieren und mit echo ausgeben:
Code:
var myLatLng = {<?php echo json_encode($data_arr); ?>};
 
Nein, also es macht keinen Unterschied bzw ich bekomme in der Console die gleiche Fehlermeldung angezeigt.
Der Fehler liegt aber wohl in der initMap-Funktion.
Ich war mir zu Anfang nicht sicher, in welche Gruppe ich mein Problem posten soll, hatte mich dann aber für PHP entschieden, da ich diesen überwiegend verwende....
 
Dann würde ich mal das Javascript in der Quelltext-Ansicht des Browser analysieren, ob das eingestreute PHP plausible Werte erzeugt hat.

Ich dachte, daß ich den return-Wert meiner geocode-Funktion einer initMap-Funktion (in java script, ich hatte mich da von einem Tutorial anleiten lassen) übergeben kann, aber das geht so nicht (die Fehlermeldung in der console: uncaught exception: InvalidValueError: initMap is not a function) .
Diese initMap-Funktion definierst Du ja selber und ein gängiger Grund, dass sie anschließend nicht bekannt ist, sind Syntaxfehler, die u. a. durch fehlerhafte Werte aus den PHP-Aufrufen resultieren könnten. Die Console sollte diese anzeigen.
 
PS:
Code:
<?php echo $latitude; ?>, <?php echo $longitude; ?>
beide Variablen finde ich nicht im PHP, dort heißen sie anscheinend $lati und $longi
 

Neue Beiträge

Zurück