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); } }
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; }
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; }
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); }
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); } }