Hay, me pregunto cómo calcular la distancia entre 2 códigos postales usando PHP y Google Maps Api.Usando PHP y google Maps Api para calcular la distancia entre 2 códigos postales (UK)
Cualquiera tiene alguna idea o enlaces a ejemplos.
Hay, me pregunto cómo calcular la distancia entre 2 códigos postales usando PHP y Google Maps Api.Usando PHP y google Maps Api para calcular la distancia entre 2 códigos postales (UK)
Cualquiera tiene alguna idea o enlaces a ejemplos.
Suponiendo que está buscando el geographic distance, primero es necesario obtener la latitud y longitud de sus dos códigos postales con el Google Maps server-side geocoding services como en el siguiente ejemplo:
$url = 'http://maps.google.com/maps/geo?q=EC3M,+UK&output=csv&sensor=false';
$data = @file_get_contents($url);
$result = explode(",", $data);
echo $result[0]; // status code
echo $result[1]; // accuracy
echo $result[2]; // latitude
echo $result[3]; // longitude
A continuación, se puede calcular la distancia entre las coordenadas de sus dos códigos postales mediante el uso de una aplicación great-circle distance tales como los siguientes:
Tenga en cuenta que el servicio de geocodificación del lado del servidor solo se puede utilizar junto con la visualización de resultados en un mapa de Google; Los resultados de geocodificación sin mostrarlos en un mapa están prohibidos por el Google Maps API Terms of Service License Restrictions.
ACTUALIZACIÓN:
Si usted está buscando la distancia de conducción en lugar de la distancia geográfica, tenga en cuenta que no existe un método documentado y aprobado en el momento de acceder a la API de Google Maps llegar a través de una Solicitud HTTP en el lado del servidor.
Sin embargo, un método indocumentado que devuelve una salida JSON es la siguiente:
http://maps.google.com/maps/nav?q=from:London%20to:Dover
Esto le devolverá las direcciones de conducción, junto con la distancia de conducción total en formato JSON: "meters":122977
.
El formato del parámetro q
debe ser from:xxx%20to:yyy
. Reemplace xxx e yyy con el inicio y el destino, respectivamente. Puede utilizar la latitud y la longitud coordina en lugar de direcciones completas:
http://maps.google.com/maps/nav?q=from:51.519894,-0.105667%20to:51.129079,1.306925
Tenga en cuenta que no sólo se trata de indocumentados, pero también puede violar las restricciones 10.1 y 10.5 de la Google Maps API Terms and Conditions.
También puede ser interesante en probar los siguientes artículos relacionados:
Tome un vistazo a la lista de correo aquí :
http://groups.google.com/group/Google-Maps-API/browse_thread/thread/71e6aa2c3de66127
Una vez que decida si desea una línea recta o distancia de conducción se puede calcular con mucha facilidad.No tiene que usar PHP, pero hay ejemplos.
Mira esto también:
La API de Google Maps está en JavaScript, PHP no. Para lograr lo que desea, gire los 2 códigos postales a las coordenadas LatLang y use la función distanceFrom
para encontrar la distancia entre ellos.
Eche un vistazo a this article para obtener un código de muestra.
¿De todos modos puedo devolver datos JSON? Voy a hacer llamadas AJAX para calcular la distancia de conducción entre 2 lugares. – dotty
Debería poder. Los datos provenientes de la API de Google ya están en formato JSON. Simplemente lo envié de regreso a PHP, o lo analizo desde el lado del cliente usando Javascript. –
No sabe si la API V3 cambia nada, pero he estado usando esto por un tiempo y que todavía funciona:
desde y hasta son cada uno expresado como latitud, longitud (una dirección probablemente trabajo; estoy seguro de que lo probé, pero no recuerdo y que tenía las coordenadas de todos modos)
$base_url = 'http://maps.googleapis.com/maps/api/directions/xml?sensor=false';
$xml = simplexml_load_file("$base_url&origin=$from&destination=$to");
$distance = (string)$xml->route->leg->distance->text;
$duration = (string)$xml->route->leg->duration->text
sobre la base de la respuesta de Daniel, se puede utilizar de Geocoding API Google para obtener coche, transporte público, caminar y distancias de ciclismo fácilmente:
$postcode1='W1J0DB';
$postcode2='W23UW';
$result = array();
$url = "http://maps.googleapis.com/maps/api/distancematrix/json?origins=$postcode1&destinations=$postcode2&mode=bicycling&language=en-EN&sensor=false";
$data = @file_get_contents($url);
$result = json_decode($data, true);
print_r($result);
Asegúrese de reemplazar & mode = bicicleta con su parámetro preferido:
modo
Esta es una gran explicación de cómo hacerlo. Pero ten en cuenta, ya que preguntas específicamente sobre el Reino Unido, que la geolocalización de Google no es tan precisa para los códigos postales del Reino Unido. Sin embargo, podría estar bien para tus propósitos, depende de lo que necesites. – MarkJ
@Mark: Gracias por compartir esta información sobre la exactitud de los códigos postales del Reino Unido. –
Esto existe: https://developers.google.com/maps/documentation/distancematrix/ – malix