Usando PHP y Google Maps Api para calcular la distancia entre 2 códigos postales (Reino Unido)

Hay, me pregunto cómo calcular la distancia entre 2 códigos postales utilizando PHP y Google Maps Api.

Alguien tiene alguna idea o enlaces a ejemplos.

Suponiendo que está buscando la distancia geográfica , primero necesita obtener la latitud y la longitud de sus dos códigos postales con los servicios de geoencoding del lado del servidor de Google Maps 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 

Luego puede calcular la distancia entre las coordenadas de sus dos códigos postales utilizando una implementación de distancia de gran círculo , como la siguiente:

  • Snipplr – Calcula la distancia entre dos coordenadas en PHP

Tenga en cuenta que el servicio de geoencoding del lado del servidor solo se puede usar junto con la visualización de resultados en un mapa de Google; La restricción de la licencia de Términos de servicio de la API de Google Maps prohíbe los resultados de geoencoding sin mostrarlos en un mapa.


ACTUALIZAR:

Si está buscando la distancia de conducción en lugar de la distancia geográfica, tenga en cuenta que no hay un método documentado y aprobado en este momento para acceder a la API de Google Maps Directions a través de una solicitud HTTP en el lado del servidor.

Sin embargo, un método no documentado que devuelve una salida JSON es el siguiente:

 http://maps.google.com/maps/nav?q=from:London%20to:Dover 

Esto le devolverá las indicaciones de manejo, junto con la distancia total de conducción 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 usar coordenadas de latitud y longitud 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 solo esto no está documentado, sino que también puede violar las restricciones 10.1 y 10.5 de los Términos y condiciones de la API de Google Maps .

También puede ser interesante al consultar los siguientes artículos relacionados:

  • Desbordamiento de stack: calcule las direcciones de manejo usando PHP?
  • Obtener distancia usando GDirections a través de URL
  • Recuperar indicaciones de manejo desde google maps con llamadas HTTP del lado del servidor y mostrar resultados con mapas estáticos para WAP
  • Google Maps y direcciones, interfaz REST?

No sé si la API V3 cambia algo, pero he estado usando esto por bastante tiempo y todavía funciona:

Desde y hacia se expresan cada uno como latitud, longitud (una dirección probablemente funcionaría, estoy seguro de que lo intenté pero no recuerdo y de todos modos tuve las coordenadas)

 $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 

Basándose en la respuesta de Daniel, puede usar la API de geoencoding de Google para obtener distancias de automóvil, transporte público, caminar y andar en bicicleta 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 = ciclismo con su parámetro preferido:

  • & mode = conducción
  • & modo = andar en bicicleta
  • & modo = tránsito
  • & modo = caminar

Echa 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 quiere una línea recta o una distancia de manejo, puede calcularla muy fácilmente. No tiene que usar PHP, pero hay ejemplos.

Mira esto también:

http://groups.google.com/group/google-maps-api/browse_thread/thread/d43de63d05adc62d/1a04053f39a3edf3?lnk=gst&q=calculate+distance#1a04053f39a3edf3

La API de Google Maps está en JavaScript, no en PHP. 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.

Echa un vistazo a este artículo para ver un código de muestra.