Beitragsseiten

Um z.B. Entfernungsberechnungen durchzuführen oder auch nur dynamisch Maps anzuzeigen, empfiehlt es sich die Koordinaten vorher über eine Geocoding API zu holen.

Es gibt hier verschiedene Möglichkeiten, bei denen aber immer die Nutzungsbedingungen der jeweiligen Anbieter geachtet werden muss.

Hier erstmal zwei (Google & Openstreet Map). Weitere folgen.

 

Beide Funktionen geben eine Array mit Breitengrad $array['lat'] & Längengrad $array['lon'] zurück.

Entfernungsberechnung anhand der Längen und Breitengrade wird hier Längen & Breitengrad - Entfernungsberechungen beschrieben.


ACHTUNG. Die Abfragen sind (Stand: 20.02.2015) für Privatpersonen auf 2500 und für Geschäftskunden 100000 pro Tag begrenzt. Die kompletten Nutzungsbedingungen wechseln ständig und sind hier zu finden: Google Geocoding API

function getGoogleCoordinates($street, $zip = '', $city = '', $country = 'Germany')
{
  $address = $street . ', ' . $zip . ' ' . $city . ', ' . $country;

  $url = 'http://maps.googleapis.com/maps/api/geocode/json?address=' . urlencode($address) . '&sensor=true';

  $curl = curl_init();
  $timeout = 5;
  curl_setopt($curl, CURLOPT_URL, $url);
  curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
  curl_setopt($curl, CURLOPT_HEADER, 0);
  curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, $timeout);
  $response = curl_exec($curl);
  curl_close($curl);

  $response = json_decode($response);

  $coordinates['lat'] = $response->results[0]->geometry->location->lat;
  $coordinates['lon'] = $response->results[0]->geometry->location->lng;
  return $coordinates;
}

 

ACHTUNG. Auch bei OpenStreetMap gibt es Nutzungsbedingungen welche hier zu finden sind: OpenStreetMap API

function getOsmCoordinates($street, $zip = '', $city = '', $country = 'Germany')
{
  $address = $street . ', ' . $zip . ' ' . $city . ', ' . $country;

  $url = 'http://nominatim.openstreetmap.org/search?q=' . urlencode($address) . '&format=json&polygon=0&addressdetails=0';

  $curl = curl_init();
  $timeout = 5;
  curl_setopt($curl, CURLOPT_URL, $url);
  curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
  curl_setopt($curl, CURLOPT_HEADER, 0);
  curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, $timeout);
  $response = curl_exec($curl);
  curl_close($curl);

  $response = json_decode($response);

  $coordinates['lat'] = $response[0]->lat;
  $coordinates['lon'] = $response[0]->lon;
  return $coordinates;
}