Wie erhalte ich den Längen- und Breitengrad einer beliebigen Adresse?

Lesezeit: 6 Minuten

Benutzer-Avatar
Ajay_kumar

Hallo, was ist die Formel, um Längen- und Breitengrad einer Adresse zu erhalten, wenn ich street_name, State_name, City_name, Country_name und Postleitzahl in PHP habe? Vielen Dank

  • Hallo Ajay – ich glaube du meinst “Längengrad”

    – Paddyslacker

    27. September 2010 um 21:18 Uhr

  • mögliches Duplikat von So erhalten Sie Längen- und Breitengrad für eine Straßenadresse programmgesteuert (und legal)

    – jball

    27. September 2010 um 21:20 Uhr

  • Zur Verdeutlichung gibt es keine Formel, aber Unternehmen bieten Geokodierungsdienste an. Siehe das oben verlinkte “Dupe”.

    – jball

    27. September 2010 um 21:22 Uhr

Benutzer-Avatar
Surya Prakash Patel

Verwenden Sie den folgenden Code, um Lat und Long mit PHP zu erhalten. Hier sind zwei Methoden:

Typ 1:

    <?php
     // Get lat and long by address         
        $address = $dlocation; // Google HQ
        $prepAddr = str_replace(' ','+',$address);
        $geocode=file_get_contents('https://maps.google.com/maps/api/geocode/json?address=".$prepAddr."&sensor=false');
        $output= json_decode($geocode);
        $latitude = $output->results[0]->geometry->location->lat;
        $longitude = $output->results[0]->geometry->location->lng;

?>

bearbeiten – Google Maps-Anfragen müssen über https erfolgen

Typ 2:

<script src="https://maps.googleapis.com/maps/api/js?v=3.exp&sensor=false"></script>
     <script>
      var geocoder;
      var map;
      function initialize() {
        geocoder = new google.maps.Geocoder();
         var latlng = new google.maps.LatLng(50.804400, -1.147250);
        var mapOptions = {
         zoom: 6,
         center: latlng
        }
         map = new google.maps.Map(document.getElementById('map-canvas12'), mapOptions);
        }

       function codeAddress(address,tutorname,url,distance,prise,postcode) {
       var address = address;

        geocoder.geocode( { 'address': address}, function(results, status) {
         if (status == google.maps.GeocoderStatus.OK) {
          map.setCenter(results[0].geometry.location);
           var marker = new google.maps.Marker({
          map: map,
          position: results[0].geometry.location
      });

      var infowindow = new google.maps.InfoWindow({
         content: 'Tutor Name: '+tutorname+'<br>Price Guide: '+prise+'<br>Distance: '+distance+' Miles from you('+postcode+')<br> <a href="'+url+'" target="blank">View Tutor profile</a> '
       });
        infowindow.open(map,marker);

          } /*else {
          alert('Geocode was not successful for the following reason: ' + status);
        }*/
       });
     }


      google.maps.event.addDomListener(window, 'load', initialize);

     window.onload = function(){
      initialize();
      // your code here
      <?php foreach($addr as $add) { 

      ?>
      codeAddress('<?php echo $add['address']; ?>','<?php echo $add['tutorname']; ?>','<?php echo $add['url']; ?>','<?php echo $add['distance']; ?>','<?php echo $add['prise']; ?>','<?php echo substr( $postcode1,0,4); ?>');
      <?php } ?>
    };
      </script>

     <div id="map-canvas12"></div>

  • Genau danach habe ich gesucht. Vielen Dank! Dürfte ich etwas fragen? Ich brauche diese Funktionalität nur für interne Berechnungen. Die API-Dokumentation weist ausdrücklich darauf hin, dass die API nur in Verbindung mit dem Dienst Google Maps verwendet werden darf. Befindet sich Ihr Codebeispiel in diesem Zustand?

    – KAP

    14. Juni 2013 um 15:32 Uhr

  • Bei Typ 1 erhalte ich „Sie haben Ihr tägliches Anforderungskontingent für diese API überschritten“. als Fehlermeldung nach ein paar Tests … gibt es eine Problemumgehung dafür, dass das tägliche Anforderungskontingent nicht erreicht wird?

    – Jeremy

    3. Februar 2015 um 9:36 Uhr

  • Im obigen PHP-Beispiel muss am Ende der URL „&key=API_KEY“ hinzugefügt werden, da sonst wahrscheinlich Probleme mit der Überschreitung des Kontingents auftreten. z.B maps.googleapis.com/maps/api/geocode/… Mehr dazu hier: developer.google.com/maps/documentation/geocoding

    – Heinrich Weber

    7. März 2015 um 0:29 Uhr


  • Unbedingt hinzufügen https:// auf php-version der file_get_contents Linie oder es wird zurückkehren Array ( [error_message] => Requests to this API must be over SSL. Load the API with "https://" instead of "http://". [results] => Array ( ) [status] => REQUEST_DENIED ) NULL

    – Dale Landry

    29. April 2017 um 6:30 Uhr

  • Wäre urlencode() nicht besser, um die Adresse vorzubereiten, da ein “&” alles durcheinander bringen würde, anstatt nur Leerzeichen durch “+” zu ersetzen?

    – NaturalBornCamper

    31. Juli 2017 um 10:22 Uhr

Benutzer-Avatar
Nana Partycar

<?php
$address="BTM 2nd Stage, Bengaluru, Karnataka 560076"; // Address
$apiKey = 'api-key'; // Google maps now requires an API key.
// Get JSON results from this request
$geo = file_get_contents('https://maps.googleapis.com/maps/api/geocode/json?address=".urlencode($address)."&sensor=false&key='.$apiKey);
$geo = json_decode($geo, true); // Convert the JSON to an array

if (isset($geo['status']) && ($geo['status'] == 'OK')) {
  $latitude = $geo['results'][0]['geometry']['location']['lat']; // Latitude
  $longitude = $geo['results'][0]['geometry']['location']['lng']; // Longitude
}
?>

  • Nur für andere, wenn Sie sie nicht abrufen können, drucken Sie die $geo-Variable, um zu sehen, dass der Fehler auftritt. Für mich musste ich einen API-Schlüssel verwenden, der in der Abfrage mit (&key=[API_KEY]) und https.

    – Richi González

    12. Juni 2019 um 20:51 Uhr

  • @DirtyBit: Du bringst mich in Verlegenheit. 😀 Schön dich wieder zu sehen.

    – Nana Partykar

    26. August 2020 um 16:52 Uhr

Sie müssen auf einen Geocodierungsdienst (z. B. von Google) zugreifen, es gibt keine einfache Formel, um Adressen in Geokoordinaten umzuwandeln.

Sie können dafür die Google Maps-API verwenden. Weitere Informationen finden Sie im folgenden Blogbeitrag.

http://stuff.nekhbet.ro/2008/12/12/how-to-get-coordinates-for-a-given-address-using-php.html

PHP hat einige nette eingebaute Funktionen zum Abrufen des geografischen Standorts. Vielleicht schaust du mal hier: http://php.net/manual/en/ref.geoip.php

Laut PHP-Handbuch “erfordert diese Erweiterung die Installation der GeoIP C-Bibliothek Version 1.4.0 oder höher. Sie können die neueste Version von » http://www.maxmind.com/app/c und kompilieren Sie es selbst.”

Benutzer-Avatar
Jan

Ich habe mir Folgendes ausgedacht, das den übergebenen Müll und das Fehlschlagen von file_get_contents berücksichtigt….

function get_lonlat(  $addr  ) {
    try {
            $coordinates = @file_get_contents('http://maps.googleapis.com/maps/api/geocode/json?address=" . urlencode($addr) . "&sensor=true');
            $e=json_decode($coordinates);
            // call to google api failed so has ZERO_RESULTS -- i.e. rubbish address...
            if ( isset($e->status)) { if ( $e->status == 'ZERO_RESULTS' ) {echo '1:'; $err_res=true; } else {echo '2:'; $err_res=false; } } else { echo '3:'; $err_res=false; }
            // $coordinates is false if file_get_contents has failed so create a blank array with Longitude/Latitude.
            if ( $coordinates == false   ||  $err_res ==  true  ) {
                $a = array( 'lat'=>0,'lng'=>0);
                $coordinates  = new stdClass();
                foreach (  $a  as $key => $value)
                {
                    $coordinates->$key = $value;
                }
            } else {
                // call to google ok so just return longitude/latitude.
                $coordinates = $e;

                $coordinates  =  $coordinates->results[0]->geometry->location;
            }

            return $coordinates;
    }
    catch (Exception $e) {
    }

dann, um die Kabel zu bekommen: wobei $pc die Postleitzahl oder Adresse ist…. $address = get_lonlat( $pc ); $l1 = $adresse->lat; $l2 = $adresse->lng;

Benutzer-Avatar
swestrup

Es gibt kein Forum, da Straßennamen und Städte im Wesentlichen zufällig vergeben werden. Die Adresse muss in einer Datenbank nachgeschlagen werden. Alternativ können Sie eine Postleitzahl in einer Datenbank für die Region nachschlagen, für die die Postleitzahl gilt.

Sie haben kein Land erwähnt, also gehe ich davon aus, dass Sie nur Adressen in den USA wollen. Es gibt zahlreiche Datenbanken, die Sie verwenden können, einige kostenlos, andere nicht.

Sie können auch die Google Maps-API verwenden, damit sie eine Adresse in ihrer Datenbank für Sie suchen. Das ist wahrscheinlich die einfachste Lösung, erfordert aber, dass Ihre Anwendung jederzeit über eine funktionierende Internetverbindung verfügt.

1258220cookie-checkWie erhalte ich den Längen- und Breitengrad einer beliebigen Adresse?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy