En el ecommerce que estoy desarrolando con stuart sobre la entrega a domicilio de comida de un restaurnate en Madrid, mi cliente quiere poner la siguiente limitación: Pedidos cuya dirección de entrega se encuentren a menos de 3,5km de la dirección del restaurante que los gasto de envío sean gratis para el cliente, como puedo obtener la distancia previa de ese job antes de generarlo?
Es posible con algun endpoint de vuestra API? o tengo que crear priemro el job y luego consultar el parametro de la response: distance o se puede consultar de alguna forma antes de crear el job?
Lamentablemente solo ofrecemos la distancia una vez se ha creado el pedido. Esta información la podrías sacar de un servicio como el de Google, que no difiere mucho al servicio interno que tenemos nosotros de calculo de distancias.
OK, podría usar Distance Matrix Service pero me gustaría saber (si se puede) si es la misma que usáis ya que según vuestro algoritmo puede ser que difiera esta distancia justo para estar dentro de los 3.5 o fuera de ellos claro.
Supongo que dependerá del tipo de transporte que se asigne ya que podrá ir por una ruta u otra
Efectivamente, el transporte hará variar la distancia entre diferentes tipos de vehículos. No es exactamente la misma distancia, ya que tenemos un sistema interno de cálculo de distancias, adaptado a nuestras necesidades.
En la práctica, las diferencias serán muy pequeñas.
Muchas gracias @Unoid por tu aportación, ya he podido resolverlo, he utilizado la API de Distance Matrix de Google, y como era para integrar en wordpress he escrito esta función y me funciona perfectamente, la pongo por si a alguien le ayuda y nuevamente gracias por tu ayuda,
// ***********************************************************************************************************
public function get_distance($origin_address, $destination_address){
$response = wp_remote_get( "https://maps.googleapis.com/maps/api/distancematrix/json?origins=".$origin_address."&destinations=".$destination_address."&key=YOUR_API_KEY" );
if( is_array($response) ) {
$json_res = json_decode($response['body']);
if ( $json_res->status == "OK" ){
// Get distance in kilometers
return ((float) round($json_res->rows[0]->elements[0]->distance->value/1000,2));
}
}
}