Ejemplo n.º 1
0
        void SetPins(AgendaPageModel context)
        {
            if (context == null || context.CourseItems == null)
            {
                return;
            }

            Map.Pins.Clear();
            Map.Polylines.Clear();

            // Draw Point markers
            foreach (var item in context.CourseItems)
            {
                var pin = new Pin()
                {
                    Address     = item.Address,
                    IsDraggable = false,
                    Flat        = true,
                    Label       = item.ContactName,
                    IsVisible   = true,
                    Icon        = BitmapDescriptorFactory.FromView(new BindingPinView(item.Index, Color.Transparent)),
                    Position    = new Position(item.Latitude, item.Longitude)
                };
                Map.Pins.Add(pin);
            }

            // Draw Lines connecting points
            for (int i = 0; i < context.CourseItems.Count; i++)
            {
                if (i + 1 < context.CourseItems.Count)
                {
                    var item      = context.CourseItems[i];
                    var next_item = context.CourseItems[i + 1];
                    var line      = new Polyline()
                    {
                        IsClickable = false, StrokeColor = (Color)App.Current.Resources["darkSkyBlue"], StrokeWidth = 2
                    };
                    line.Positions.Add(new Position(item.Latitude, item.Longitude));
                    line.Positions.Add(new Position(next_item.Latitude, next_item.Longitude));
                    Map.Polylines.Add(line);
                }
            }

            if (!Map.Pins.Contains(MyPin) && !string.IsNullOrEmpty(MyPin.Label))
            {
                Map.Pins.Add(MyPin);
            }
        }
Ejemplo n.º 2
0
        // Assign on set pins event whenever list is changed
        protected override void OnBindingContextChanged()
        {
            base.OnBindingContextChanged();

            if (BindingContext == null)
            {
                return;
            }

            ViewModel = BindingContext as AgendaPageModel;

            ViewModel.PropertyChanged += (sender, e) =>
            {
                if (e.PropertyName == "CourseItems")
                {
                    SetPins(ViewModel);
                }
            };

            SetPins(ViewModel);
        }