tracker servidor rastreo rastrear por placa para localizador geolocalizacion enviar coordenadas con como carros carro c# winforms web-services gps

c# - servidor - Dispositivos de seguimiento de GPS del vehículo



rastreo gps php (5)

Estoy buscando agregar una función a un sistema de entrada de pedidos para mostrar la distancia en KM entre la ubicación de la orden y la camioneta de entrega asignada en tiempo real.

Las camionetas tienen un sistema de seguimiento GPS de High Point GPS , viene con una API para consultar la ubicación del conductor, devuelve en formato LAT / LONG, y la dirección de ubicación si está disponible.

Una vez que obtengo la ubicación, puedo usar un servicio web para calcular la distancia entre las 2 ubicaciones. ¿Alguien sabe cuál es la mejor manera de obtener la distancia entre 2 ubicaciones usando LAT / LONG para la búsqueda de direcciones y vehículos para la ubicación de entrega?



Depende de los otros servicios que ya está utilizando. Por ejemplo, ya usamos Google Maps para mostrar la ruta, por lo que usamos su servicio de geocodificación para traducir desde una dirección a coordenadas, así como su servicio de distancia para calcular distancias.


He hecho esto pero en Java, probablemente puede portarlo a c # sin mucho esfuerzo.

Esto es muy preciso para distancias inferiores a 2000 kilómetros, luego puede variar un poco desde la distancia real. Esto se debe a la curvatura de la tierra. Pero para distancias pequeñas, puede suponer que es sencillo y que el resultado no tiene ningún impacto o es muy pequeño.

Aquí hay un enlace que encontré útil.

Y otro enlace , una implementación de Haversine en C #.

Espero eso ayude.

Saludos cordiales, Federico.

public String execute(String plat1, String plon1, String plat2, String plon2) { String distance; double lat1, lon1, lat2, lon2; try{ lat1 = Double.parseDouble(plat1); lon1 = Double.parseDouble(plon1); lat2 = Double.parseDouble(plat2); lon2 = Double.parseDouble(plon2); } catch (Exception e){ lat1 = 0.0d; lon1 = 0.0d; lat2 = 0.0d; lon2 = 0.0d; } //theta and distance double theta = lon1 - lon2; double dist = Math.sin(deg2rad(lat1)) * Math.sin(deg2rad(lat2)) + Math.cos(deg2rad(lat1)) * Math.cos(deg2rad(lat2)) * Math.cos(deg2rad(theta)); //distance dist = Math.acos(dist); dist = rad2deg(dist); dist = dist * 60 * 1.1515; dist = dist * 1.609344; //convert to meters dist = dist * 1000; //output in meters distance = Double.toString(dist); return distance; } private double deg2rad(double deg) { return (deg * Math.PI / 180.0); } private double rad2deg(double rad) { return (rad * 180.0 / Math.PI); }

Una pequeña explicación:

  • (plat1, plon1) es lat y lng del punto 1 u origen
  • (plat2, plon2) es lat y lng del punto 2 o destino
  • el método "ejecutar" es el que llamas, devuelve una cadena que contiene la distancia en metros (la conversión a otras unidades se puede hacer fácilmente)
  • dos funciones de asistencia se declaran como "deg2rad" y "rad2deg".

La respuesta simple que puede encontrar, es una fórmula simple:

Calcula la distancia entre dos puntos en google maps V3

var rad = function(x) { return x * Math.PI / 180; }; var getDistance = function(p1, p2) { var R = 6378137; // Earth’s mean radius in meter var dLat = rad(p2.lat() - p1.lat()); var dLong = rad(p2.lng() - p1.lng()); var a = Math.sin(dLat / 2) * Math.sin(dLat / 2) + Math.cos(rad(p1.lat())) * Math.cos(rad(p2.lat())) * Math.sin(dLong / 2) * Math.sin(dLong / 2); var c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a)); var d = R * c; return d; // returns the distance in meter };

El uso de google maps api será la mejor solución:

https://developers.google.com/maps/documentation/distancematrix/