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
Wie erhalte ich den Längen- und Breitengrad einer beliebigen Adresse?
Ajay_kumar
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 derfile_get_contents
Linie oder es wird zurückkehrenArray ( [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
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.”
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;
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.
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