示例#1
0
        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);
        }
示例#2
0
 protected PointMarker(SerializationInfo info, StreamingContext context)
     : base(info, context)
 {
     this.type = Extensions.GetStruct<PointMarkerType>(info, "type", PointMarkerType.none);
 }
示例#3
0
 public PointMarker(PointLatLng p, PointMarkerType type)
     : base(p)
 {
     this.Type = type;
 }
示例#4
0
        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));
            }
        }