コード例 #1
0
    public virtual EDistanceType get_distance_type()
    {
        EDistanceType ret = (EDistanceType)modshogunPINVOKE.Distance_get_distance_type(swigCPtr);

        if (modshogunPINVOKE.SWIGPendingException.Pending)
        {
            throw modshogunPINVOKE.SWIGPendingException.Retrieve();
        }
        return(ret);
    }
 public CooperlinkApplicationService(IVehicleRepository vehicleRepository,
                                     ICooperlinkHttpService cooperlinkHttpService,
                                     ILocationConfiguration locationConfiguration,
                                     IBrokerMqttConfig brokerMqttConfig,
                                     IBrokerMqtt brokerMqtt,
                                     ILogger <CooperlinkApplicationService> logger)
 {
     _vehicleRepository     = vehicleRepository;
     _cooperlinkHttpService = cooperlinkHttpService;
     _locationConfiguration = locationConfiguration;
     _brokerMqtt            = brokerMqtt;
     _brokerMqttConfig      = brokerMqttConfig;
     _logger       = logger;
     _baseLocation = new Location(_locationConfiguration.Latitude, _locationConfiguration.Longitude);
     _radius       = _locationConfiguration.Radius;
     _distanceType = _locationConfiguration.DistanceType;
 }
コード例 #3
0
        public static double DistanceBetweenTwoPoints(Location location1, Location location2, EDistanceType type = EDistanceType.KILOMETERS)
        {
            //HAVERSINE
            double R = (type == EDistanceType.MILES) ? 3960 : 6371;

            double dLat = toRadian(location2.Latitude - location1.Latitude);
            double dLon = toRadian(location2.Longitude - location1.Longitude);

            double a = Math.Sin(dLat / 2) * Math.Sin(dLat / 2) +
                       Math.Cos(toRadian(location1.Latitude)) * Math.Cos(toRadian(location2.Latitude)) *
                       Math.Sin(dLon / 2) * Math.Sin(dLon / 2);
            double c = 2 * Math.Asin(Math.Min(1, Math.Sqrt(a)));
            double d = R * c;

            return(d);
        }
コード例 #4
0
 public static bool AllowedOpenGate(this LocationInfo curretLocation, LocationInfo lastLocation, Location baseLocation, double radius, EDistanceType distanceType)
 {
     return(
         lastLocation.Ignition == EIgnition.ON &&
         curretLocation.Ignition == EIgnition.OFF &&
         lastLocation.LocationWithinRadius(baseLocation, radius, distanceType) &&
         curretLocation.LocationWithinRadius(baseLocation, radius, distanceType)
         );
 }
コード例 #5
0
        public static bool LocationWithinRadius(this LocationInfo location1, Location location2, double radius, EDistanceType type = EDistanceType.KILOMETERS)
        {
            var position2 = new Location(location1.Latitude, location1.Longitude);

            var distance = DistanceBetweenTwoPoints(position2, location2, type);

            return(distance <= radius);
        }