Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Calculo de distancia en php

Estas en el tema de Calculo de distancia en php en el foro de PHP en Foros del Web. Buenas tengo un script que calcula la distancia en KM y en Millas a partir de la latitud y longitud entre los puntos El codigo ...
  #1 (permalink)  
Antiguo 05/11/2013, 05:23
 
Fecha de Ingreso: diciembre-2007
Mensajes: 56
Antigüedad: 16 años, 4 meses
Puntos: 0
Calculo de distancia en php

Buenas tengo un script que calcula la distancia en KM y en Millas a partir de la latitud y longitud entre los puntos

El codigo es el siguiente (pura trigonometria)

function get_nearby($lat, $long, $option)
{

if($option == "km")
$this->db->select("*, ROUND(((acos(sin((".$lat." * pi()/180)) * sin((markers_lat*pi()/180))+cos((".$lat." * pi()/180)) * cos((markers_lat*pi()/180)) * cos(((".$long." - markers_lng) *pi()/180))))*180/pi())*60*1.1515*1.609344) as distance");
else
$this->db->select("*, ROUND(((acos(sin((".$lat." * pi()/180)) * sin((markers_lat*pi()/180))+cos((".$lat." * pi()/180)) * cos((markers_lat*pi()/180)) * cos(((".$long."- markers_lng)* pi()/180))))*180/pi())*60*1.1515) as distance");

$this->db->from('markers');
$this->db->order_by('distance', 'asc');

$query = $this->db->get();
$result = $query->result_array();

return $result;
}




El caso es que necesito que cuando la distancia sea menor que 1km que salga en metros alguien puede echarme una mano? Si necesita el script se lo paso tb completo es una app movil para localizador de tiendas para movil pero queria probar a ver estos cambios si lo arreglaba un poco


  #2 (permalink)  
Antiguo 05/11/2013, 05:26
 
Fecha de Ingreso: diciembre-2007
Mensajes: 56
Antigüedad: 16 años, 4 meses
Puntos: 0
Respuesta: Calculo de distancia en php

Actualmente cuando la distancia es menor de 1 km sale 0 km se me habia olvidao
  #3 (permalink)  
Antiguo 05/11/2013, 05:30
Avatar de pzin
Moderata 😈
 
Fecha de Ingreso: julio-2002
Ubicación: Islas Canarias
Mensajes: 10.488
Antigüedad: 21 años, 8 meses
Puntos: 2114
Respuesta: Calculo de distancia en php

Pues tendrás que pasar los kilómetros a metros.

Código PHP:
Ver original
  1. if($result<1) $result = $result * 1000;

  #4 (permalink)  
Antiguo 05/11/2013, 05:46
 
Fecha de Ingreso: diciembre-2007
Mensajes: 56
Antigüedad: 16 años, 4 meses
Puntos: 0
Respuesta: Calculo de distancia en php

Ah gracias perdonad pero de php no tengo ni idea

He puesto

function get_nearby($lat, $long, $option)
{

if($option == "km")
$this->db->select("*, ROUND(((acos(sin((".$lat." * pi()/180)) * sin((markers_lat*pi()/180))+cos((".$lat." * pi()/180)) * cos((markers_lat*pi()/180)) * cos(((".$long." - markers_lng) *pi()/180))))*180/pi())*60*1.1515*1.609344) as distance");
else
$this->db->select("*, ROUND(((acos(sin((".$lat." * pi()/180)) * sin((markers_lat*pi()/180))+cos((".$lat." * pi()/180)) * cos((markers_lat*pi()/180)) * cos(((".$long."- markers_lng)* pi()/180))))*180/pi())*60*1.1515) as distance");

$this->db->from('markers');
$this->db->order_by('distance', 'asc');

$query = $this->db->get();


$result = $query->result_array();

if($result<1) $result = $result * 1000;

return $result;
}



Pero me sigue saliendo 0 km cuando estan a menos de 1 km sera que tiene algun tipo de mascara que no tiene decimales ?
  #5 (permalink)  
Antiguo 05/11/2013, 06:14
Avatar de dashtrash
Colaborador
 
Fecha de Ingreso: abril-2007
Ubicación: Ni en Sevilla,ni en Sanlúcar..qué más da..
Mensajes: 927
Antigüedad: 17 años
Puntos: 270
Respuesta: Calculo de distancia en php

Prueba a quitarle la llamada a ROUND() a la query.Cuando lo hagas, posiblemente tengas que redondear en php cuando quieras que la distancia salga en kilometros.
  #6 (permalink)  
Antiguo 05/11/2013, 07:11
 
Fecha de Ingreso: diciembre-2007
Mensajes: 56
Antigüedad: 16 años, 4 meses
Puntos: 0
Respuesta: Calculo de distancia en php

Le he quitado el ROUND y efectivamente ahora me sale mas o menos asi

Distancia= 0.25787878787 Km

Hay alguna manera de darle una salida con formato 3 decimales ? ROUND tiene opcion a poner salidas formateadas? Muchisimas gracias por la ayuda
  #7 (permalink)  
Antiguo 05/11/2013, 08:58
Avatar de Cuervoo  
Fecha de Ingreso: octubre-2013
Mensajes: 165
Antigüedad: 10 años, 6 meses
Puntos: 43
Respuesta: Calculo de distancia en php

Con number_format http://php.net/manual/es/function.number-format.php
  #8 (permalink)  
Antiguo 05/11/2013, 09:10
 
Fecha de Ingreso: diciembre-2007
Mensajes: 56
Antigüedad: 16 años, 4 meses
Puntos: 0
Respuesta: Calculo de distancia en php

Muchas gracias, le quito el Round y ya tengo la distancia con decimales de momento tengo el codigo asi

function get_nearby($lat, $long, $option)
{

if($option == "km")
$this->db->select("*, (((acos(sin((".$lat." * pi()/180)) * sin((markers_lat*pi()/180))+cos((".$lat." * pi()/180)) * cos((markers_lat*pi()/180)) * cos(((".$long." - markers_lng) *pi()/180))))*180/pi())*60*1.1515*1.609344) as distance");
else
$this->db->select("*, (((acos(sin((".$lat." * pi()/180)) * sin((markers_lat*pi()/180))+cos((".$lat." * pi()/180)) * cos((markers_lat*pi()/180)) * cos(((".$long."- markers_lng)* pi()/180))))*180/pi())*60*1.1515) as distance");



$this->db->from('markers');
$this->db->order_by('distance', 'asc');



$query = $this->db->get();


$result = $query->result_array();


return $result;
}


Y ahora donde debo incluir el codigo de number_format? Es algo asi? Muchisimas gracias, es que no se ni donde debo de incluirlo


echo number_format($distance,3,",",".");

Etiquetas: calculo, distancia, select
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 23:32.