Пример #1
0
        private void AnimacionDeCammionMapaYFoto()
        {
            try
            {
                var truckLayer = (VectorItemsLayer)UiMapaTrackingMapaYFoto.Layers[CapaMapaTracking.Camion.ToString()];
                var camiones = truckLayer.Data as MapItemStorage;
                var camion = (CamionMapa)camiones.Items.FirstOrDefault();
                var totalTareas = TareasCumplimientodeEntregas.Count;

                var tareaActual = camion.TareaActual;

                var nuevaTarea = totalTareas == tareaActual.SEQUENCE ? TareasCumplimientodeEntregas.FirstOrDefault() : TareasCumplimientodeEntregas[tareaActual.SEQUENCE];
                var nuevoDestino = totalTareas == nuevaTarea.SEQUENCE ? TareasCumplimientodeEntregas[1] : TareasCumplimientodeEntregas[nuevaTarea.SEQUENCE];

                CoordPoint nuevaUbicacion;

                camion.DistanciaRecorrida += camion.Distancia / 20;
                if (camion.DistanciaRecorrida >= camion.Distancia)
                {
                    if (nuevaTarea.SEQUENCE == totalTareas)
                    {
                        TicksReinicio = 5;
                        nuevaTarea = TareasCumplimientodeEntregas.FirstOrDefault();
                    }

                    nuevaUbicacion = nuevaTarea.Location;
                    camion.TareaActual = nuevaTarea;

                    camion.DistanciaRecorrida = 0;
                    var p1 = new GeoCoordinate(nuevaTarea.Latitude, nuevaTarea.Longitude);
                    var p2 = new GeoCoordinate(nuevoDestino.Latitude, nuevoDestino.Longitude);
                    var distance = p1.GetDistanceTo(p2);

                    camion.Distancia = distance;
                }
                else
                {
                    var ratio = camion.DistanciaRecorrida / camion.Distancia;
                    if (double.IsNaN(ratio)) return;
                    nuevaUbicacion = new GeoPoint(tareaActual.Latitude + ratio * (nuevaTarea.Latitude - tareaActual.Latitude), tareaActual.Longitude + ratio * (nuevaTarea.Longitude - tareaActual.Longitude));
                }

                camion.Location = nuevaUbicacion;
                camiones.Items.Clear();
                camiones.Items.Add(camion);

                truckLayer.Data = camiones;
            }
            catch (Exception ex)
            {
                InteraccionConUsuarioServicio.Mensaje("Error en la animacion del camion: " + ex.Message);
            }
        }
Пример #2
0
        private ListSourceDataAdapter ObtenerTareas()
        {
            var lsD = new ListSourceDataAdapter
            {
                DefaultMapItemType = MapItemType.Pushpin,
                Mappings = { Latitude = "Latitude", Longitude = "Longitude", Text = "SEQUENCE" },
                DataSource = TareasCumplimientodeEntregas.ToList()
            };

            Image image = (Image)Properties.Resources.ResourceManager.GetObject("pushpin_red");

            lsD.SetMapItemFactory(new PushpinFactory(image, Color.Red));

            return lsD;
        }
Пример #3
0
        private MapItemStorage ObtenerCamion()
        {
            if (TareasCumplimientodeEntregas.Count <= 1) return null;
            var storage = new MapItemStorage();
            var primeraTarea = TareasCumplimientodeEntregas[0];
            var segundaTarea = TareasCumplimientodeEntregas[1];

            var puntoPrimeraTarea = new GeoCoordinate(primeraTarea.Latitude, primeraTarea.Longitude);
            var puntoSegundaTarea = new GeoCoordinate(segundaTarea.Latitude, segundaTarea.Longitude);
            var distancia = puntoPrimeraTarea.GetDistanceTo(puntoSegundaTarea);

            Camion = new CamionMapa()
            {
                TareaActual = TareasCumplimientodeEntregas.FirstOrDefault(),
                DistanciaRecorrida = 0,
                Distancia = distancia,
                Location = TareasCumplimientodeEntregas.FirstOrDefault().Location
            };

            storage.Items.Add(Camion);
            return storage;
        }
Пример #4
0
        private void MostrarInformacionDelDocumentoMapaYFoto()
        {
            var tarea = TareasCumplimientodeEntregas.FirstOrDefault();
            if (tarea == null) return;

            var overlayWithText = new MapOverlay
            {
                Alignment = ContentAlignment.BottomCenter,
                JoiningOrientation = Orientation.Horizontal,
                Margin = new Padding(10),
                Padding = new Padding(7)
            };

            overlayWithText.Items.Add(new MapOverlayTextItem()
            {
                TextAlignment = ContentAlignment.MiddleCenter,
                Text = "Piloto - " + tarea.PILOT_NAME +
                        "\nFecha de Inicio - " + tarea.ACCEPTED_STAMP +
                        "\nPorcentaje de Cumplimiento - " + tarea.PERCENTAGE
            });

            UiMapaTrackingMapaYFoto.Overlays.Add(overlayWithText);
        }
Пример #5
0
        private void UiTimerCamion_Tick(object sender, EventArgs e)
        {
            try
            {
                if (TareasCumplimientodeEntregas.Count <= 1)
                {
                    UiTimerCamion.Enabled = false;
                    return;
                }

                if (TicksReinicio > 0)
                {
                    TicksReinicio--;
                    return;
                }

                var truckLayer = (VectorItemsLayer)UiMapaTracking.Layers[CapaMapaTracking.Camion.ToString()];
                var camiones = truckLayer.Data as MapItemStorage;
                var camion = (CamionMapa)camiones.Items.FirstOrDefault();
                var totalTareas = TareasCumplimientodeEntregas.Count;

                var tareaActual = camion.TareaActual;

                var nuevaTarea = totalTareas == tareaActual.SEQUENCE ? TareasCumplimientodeEntregas.FirstOrDefault() : TareasCumplimientodeEntregas[tareaActual.SEQUENCE];
                var nuevoDestino = totalTareas == nuevaTarea.SEQUENCE ? TareasCumplimientodeEntregas[1] : TareasCumplimientodeEntregas[nuevaTarea.SEQUENCE];

                CoordPoint nuevaUbicacion;

                camion.DistanciaRecorrida += camion.Distancia / 20;
                if (camion.DistanciaRecorrida >= camion.Distancia)
                {
                    if (nuevaTarea.SEQUENCE == totalTareas)
                    {
                        TicksReinicio = 5;
                        nuevaTarea = TareasCumplimientodeEntregas.FirstOrDefault();
                    }

                    if (!string.IsNullOrEmpty(nuevaTarea.GPS))
                    {
                        nuevaUbicacion = nuevaTarea.Location;
                        camion.TareaActual = nuevaTarea;

                        camion.DistanciaRecorrida = 0;
                        var p1 = new GeoCoordinate(nuevaTarea.Latitude, nuevaTarea.Longitude);
                        var p2 = new GeoCoordinate(nuevoDestino.Latitude, nuevoDestino.Longitude);
                        var distance = p1.GetDistanceTo(p2);

                        camion.Distancia = distance;
                        camion.Location = nuevaUbicacion;
                    }
                }
                else
                {
                    var ratio = camion.DistanciaRecorrida / camion.Distancia;
                    if (double.IsNaN(ratio)) return;
                    nuevaUbicacion = new GeoPoint(tareaActual.Latitude + ratio * (nuevaTarea.Latitude - tareaActual.Latitude), tareaActual.Longitude + ratio * (nuevaTarea.Longitude - tareaActual.Longitude));
                    camion.Location = nuevaUbicacion;
                }
                
                camiones.Items.Clear();
                camiones.Items.Add(camion);

                truckLayer.Data = camiones;

                AnimacionDeCammionMapaYFoto();

            }
            catch (Exception exception)
            {
                UiTimerCamion.Enabled = false;
                InteraccionConUsuarioServicio.MensajeErrorDialogo(exception.Message);
            }
        }