void UpdateRoutesPixBuf() { if (pixbufMarkers != null && ViewModel.RoutesOnDay.Count == pixbufMarkers.Length) { return; } pixbufMarkers = new Pixbuf[ViewModel.RoutesOnDay.Count]; for (int i = 0; i < ViewModel.RoutesOnDay.Count; i++) { PointMarkerShape shape = ViewModel.GetMarkerShapeFromBottleQuantity(ViewModel.RoutesOnDay[i].TotalFullBottlesToClient); pixbufMarkers[i] = PointMarker.GetIconPixbuf(ViewModel.GetAddressMarker(i).ToString(), shape); } }
private PointMarker FillAddressMarker(Order order, PointMarkerType type, PointMarkerShape shape, GMapOverlay overlay, RouteList route) { var addressMarker = new PointMarker(new PointLatLng((double)order.DeliveryPoint.Latitude, (double)order.DeliveryPoint.Longitude), type, shape) { Tag = order }; string ttText = order.DeliveryPoint.ShortAddress; if (order.Total19LBottlesToDeliver > 0) { ttText += string.Format("\nБутылей 19л: {0}", order.Total19LBottlesToDeliver); } if (order.Total6LBottlesToDeliver > 0) { ttText += string.Format("\nБутылей 6л: {0}", order.Total6LBottlesToDeliver); } if (order.Total600mlBottlesToDeliver > 0) { ttText += string.Format("\nБутылей 0,6л: {0}", order.Total600mlBottlesToDeliver); } ttText += string.Format($"\nЗабор бутылей: {order.BottlesReturn}"); ttText += string.Format("\nВремя доставки: {0}\nРайон: {1}", order.DeliverySchedule?.Name ?? "Не назначено", ViewModel.LogisticanDistricts?.FirstOrDefault(x => x.DistrictBorder.Contains(order.DeliveryPoint.NetTopologyPoint))?.DistrictName); addressMarker.ToolTipText = ttText; var identicalPoint = overlay.Markers.Count(g => g.Position.Lat == (double)order.DeliveryPoint.Latitude && g.Position.Lng == (double)order.DeliveryPoint.Longitude); var pointShift = 5; if (identicalPoint >= 1) { addressMarker.Offset = new System.Drawing.Point(identicalPoint * pointShift, identicalPoint * pointShift); } if (route != null) { addressMarker.ToolTipText += string.Format(" Везёт: {0}", route.Driver.ShortName); } return(addressMarker); }
private void FillTypeAndShapeMarker(Order order, RouteList route, IEnumerable <int> orderRlsIds, out PointMarkerShape shape, out PointMarkerType type, bool overdueOrder = false) { shape = ViewModel.GetMarkerShapeFromBottleQuantity(order.Total19LBottlesToDeliver, overdueOrder); type = PointMarkerType.black; if (!orderRlsIds.Any()) { if ((order.DeliverySchedule.To - order.DeliverySchedule.From).TotalHours <= 1) { type = PointMarkerType.black_and_red; } else { double from = order.DeliverySchedule.From.TotalMinutes; double to = order.DeliverySchedule.To.TotalMinutes; if (from >= 1080 && to <= 1439) //>= 18:00, <= 23:59 { type = PointMarkerType.grey_stripes; } else if (from >= 0) { if (to <= 720) //<= 12:00 { type = PointMarkerType.red_stripes; } else if (to <= 900) //<=15:00 { type = PointMarkerType.yellow_stripes; } else if (to <= 1080) //<= 18:00 { type = PointMarkerType.green_stripes; } } } } if (route != null) { type = ViewModel.GetAddressMarker(ViewModel.RoutesOnDay.IndexOf(route)); } }