beste mensen
Ik ben al 2 dagen aan het zoeken naar een script
ook bij google maps kom ik er niet uit
maar misschien kan iemand me op weg helpen naar de juiste informatie

Ik wil Google maps op mijn website
MAAR
voor elk adres van een persoon of bedrijf
moet er een eigen google kaart getoond worden
met de locatie van waar deze persoon of bedrijf zich bevind

net zoals in de telefoongids

Ik ben bezig geweest met een php scriptje <?php $straat,+huisnummer,+$plaats; ?>
dit script plaats je op de plek van de adres gegevens van het script iframe van google. MAAR helaas werkt dit niet goed.

Dus ik denk dat ik een database record aan moet maken in de database met de coordinaten. Maar hoe lees ik die dan uit?

Ik snap niet dat google geen instructies aanbiedt voor deze inplementatie voor je website.

Heeft iemand een suggestie

het draadje dwaalt van het onderwerp af
heeft 1 van de heren voor mij misschien ook een goede tip?
bekijk eens wat er in het script van gunther gebeurt! hij zet gewoon alles achter elkaar in een link dmv de contenatie-operator (de punt). dus de waardes van bovengenoemde variabelen kun je eenvoudig in die link zetten, waardoor je de custom link hebt, die je nodig hebt. wat jij dus zult moeten doen zijn databasevariabelen in die link zetten.
ik ga het vast vinden ...
en dan voor eens en altijd plaats ik dat hele script hier
zodat anderen niet zoals ik, in 3 dagen 3 jaar ouder worden

sjonge met dat scripten denk je iets te hebben opgelost om aan de andere kant weer helemaal vast te lopen

oke ik ga aan het werk en hou mijn mond verder

Als je toch nog via de coördinaten wilt doen, dan kan je dit script gebruiken. Je moet het script niet elke keer runnen, dat zou te veel snelheid kosten. Je moet het telkens nadat je iets hebt toegevoegd aan de database runnen. Je moet wel een tabel maken enzo, maar ik hoop dat je toch wel een beetje van deze code kunt verstaan.

<?php
$mysql_host = "";
$mysql_user = "";
$mysql_pass = "";
$mysql_db   = "";
define("MAPS_HOST", "maps.google.com");
// KEY via https://code.google.com/apis/console
define("KEY", "YOUR_GOOGLE_MAPS_API_KEY");

// Opens a connection to a MySQL server
$connection = mysql_connect($mysql_host, $mysql_user, $mysql_pass);
if (!$connection) {
  die("Not connected : " . mysql_error());
}

// Set the active MySQL database
$db_selected = mysql_select_db($mysql_db, $connection);
if (!$db_selected) {
  die("Can\'t use db : " . mysql_error());
}

// Select all rows in the places table
$query = "SELECT * FROM places";
$result = mysql_query($query);
if (!$result) {
  die("Invalid query: " . mysql_error());
}

// Initialize delay in geocode speed
$delay = 0;
// Set base url for the API
$base_url = "http://" . MAPS_HOST . "/maps/geo?output=xml" . "&key=" . KEY;
// Iterate through the rows, geocoding each address
while ($row = @mysql_fetch_assoc($result)) {
  $geocode_pending = true;

  while ($geocode_pending) {
    $address = $row['straat'] . $row['nummer'] . $row['plaats'] . $row['land'];
    $id = $row['ID'];
    $request_url = $base_url . "&q=" . urlencode($address);
    $xml = simplexml_load_file($request_url) or die("url not loading");

    $status = $xml->Response->Status->code;
    if (strcmp($status, "200") == 0) {
      // Successful geocode
      $geocode_pending = false;
      $coordinates = $xml->Response->Placemark->Point->coordinates;
      $coordinatesSplit = explode(",", $coordinates);
      // Format: Longitude, Latitude, Altitude
      $lat = $coordinatesSplit[1];
      $lng = $coordinatesSplit[0];

      $query = sprintf("UPDATE places " .
             " SET lat = '%s', lng = '%s' " .
             " WHERE ID = '%s' LIMIT 1;",
             mysql_real_escape_string($lat),
             mysql_real_escape_string($lng),
             mysql_real_escape_string($id));
      $update_result = mysql_query($query);
      if (!$update_result) {
        die("Invalid query: " . mysql_error());
      }
      else
      {
      	echo $address . " OK!<br />";
      }
    } else if (strcmp($status, "620") == 0) {
      // sent geocodes too fast
      $delay += 100000;
    } else {
      // failure to geocode
      $geocode_pending = false;
      echo "Address " . $address . " failed to geocoded. ";
      echo "Received status " . $status . "
\n";
    }
    usleep($delay);
  }
}
?>
ik kan het een beetje lezen
toevoeging van een tabel places in je database

maar moet ik de coordinaten opslaan in een xml bestand?


Ineke, 'k heb je een pm gestuurd ;)
Je hoeft niet perse een nieuwe tabel te maken, je kan ook de kolommen lat en lng aan je bestaande tabel toevoegen. Als je dit script dan draait wordt het adres opgehaald op regel 38 en worden de coördinaten toegevoegd aan lat en lng bij regel 53-55. Dan kan je voor de coördinaten dus de kolommen lat en lng gebruiken.
dus als ik het goed begrijp kan ik de exacte coordinaten toevoegen aan de bijv. de vestigingen tabel. Dat zijn dus 2 coordinaten.
Ik kan niet goed lezen waar de coordinaten worden uitgelezen

en de $id = $row['ID'];
die gebruik ik niet dus die kan ik dan toch gewoon weglaten?
of is dat de vestigings_id? (in mijn geval)

ik probeer het te begrijpen/lezen maar pittig

In jouw geval is dat dus vestigings_id, maar dan moet je ook op regel 55 de query aanpassen voor vestigings_id, anders worden alle records in de database aangepast. De coördinaten worden uitgelezen op regels 46-51. Ze worden eerst uit Google's XML bestand gehaald en dan worden ze gesplit met de functie explode. Ze worden namelijk uit het XML bestand op http://maps.google.com/maps/geo?output=xml&q=Amsterdam gehaald. Je kan zien dat daar de coördinaten in een regel staan, dus daarom worden ze gesplitst. Meer uitleg over dit script op https://developers.google.com/maps/articles/phpsqlgeocode, waar ik het script ook vandaan heb.
Het probleem is opgelost via online support. Het script is goed maar foutief geplaatst, daarom kon er dus niets getoond worden.

Reageren