示例#1
0
        void RemovePolyline(Polyline polyline)
        {
            var native = GetNativePolyline(polyline);

            if (native != null)
            {
                native.Remove();
                _polylines.Remove(native);
            }
        }
示例#2
0
        protected virtual PolylineOptions CreatePolylineOptions(Polyline polyline)
        {
            var opts = new PolylineOptions();

            opts.InvokeColor(polyline.StrokeColor.ToAndroid(Colors.Black));
            opts.InvokeWidth(polyline.StrokeWidth);

            foreach (var position in polyline.Geopath)
            {
                opts.Points.Add(new LatLng(position.Latitude, position.Longitude));
            }

            return(opts);
        }
示例#3
0
        protected Polyline GetFormsPolyline(APolyline polyline)
        {
            Polyline targetPolyline = null;

            for (int i = 0; i < Map.MapElements.Count; i++)
            {
                var element = Map.MapElements[i];
                if ((string)element.MapElementId == polyline.Id)
                {
                    targetPolyline = element as Polyline;
                    break;
                }
            }

            return(targetPolyline);
        }
示例#4
0
        public MapElementsGallery()
        {
            InitializeComponent();

            Map.MoveToRegion(
                MapSpan.FromCenterAndRadius(
                    new Position(39.828152, -98.569817),
                    Distance.FromMiles(1681)));

            _polyline = new Maps.Polyline
            {
                Geopath =
                {
                    new Position(47.641944, -122.127222),
                    new Position(37.411625, -122.071327),
                    new Position(35.138901, -80.922623)
                }
            };

            _polygon = new Maps.Polygon
            {
                StrokeColor = Color.FromHex("#002868"),
                FillColor   = Color.FromHex("#88BF0A30"),
                Geopath     =
                {
                    new Position(37, -102.05),
                    new Position(37, -109.05),
                    new Position(41, -109.05),
                    new Position(41, -102.05)
                }
            };

            _circle = new Circle
            {
                Center      = new Position(42.352364, -71.067177),
                Radius      = Distance.FromMiles(100.0),
                StrokeColor = Color.FromRgb(31, 174, 206),
                FillColor   = Color.FromRgba(31, 174, 206, 127)
            };

            Map.MapElements.Add(_polyline);
            Map.MapElements.Add(_polygon);
            Map.MapElements.Add(_circle);

            ElementPicker.SelectedIndex = 0;
        }
示例#5
0
        void AddClicked(object sender, EventArgs e)
        {
            switch (_selectedType)
            {
            case SelectedElementType.Polyline:
                Map.MapElements.Add(_polyline = new Maps.Polyline());
                break;

            case SelectedElementType.Polygon:
                Map.MapElements.Add(_polygon = new Maps.Polygon());
                break;

            case SelectedElementType.Circle:
                Map.MapElements.Add(_circle = new Circle());
                break;
            }
        }
示例#6
0
        protected APolyline GetNativePolyline(Polyline polyline)
        {
            APolyline targetPolyline = null;

            if (_polylines != null)
            {
                for (int i = 0; i < _polylines.Count; i++)
                {
                    var native = _polylines[i];
                    if (native.Id == (string)polyline.MapElementId)
                    {
                        targetPolyline = native;
                        break;
                    }
                }
            }

            return(targetPolyline);
        }
示例#7
0
        void AddPolyline(Polyline polyline)
        {
            var map = NativeMap;

            if (map == null)
            {
                return;
            }

            if (_polylines == null)
            {
                _polylines = new List <APolyline>();
            }

            var options        = CreatePolylineOptions(polyline);
            var nativePolyline = map.AddPolyline(options);

            polyline.MapElementId = nativePolyline.Id;

            _polylines.Add(nativePolyline);
        }
示例#8
0
        void PolylineOnPropertyChanged(Polyline formsPolyline, PropertyChangedEventArgs e)
        {
            var nativePolyline = GetNativePolyline(formsPolyline);

            if (nativePolyline == null)
            {
                return;
            }

            if (e.PropertyName == MapElement.StrokeColorProperty.PropertyName)
            {
                nativePolyline.Color = formsPolyline.StrokeColor.ToAndroid(Colors.Black);
            }
            else if (e.PropertyName == MapElement.StrokeWidthProperty.PropertyName)
            {
                nativePolyline.Width = formsPolyline.StrokeWidth;
            }
            else if (e.PropertyName == nameof(Polyline.Geopath))
            {
                nativePolyline.Points = formsPolyline.Geopath.Select(position => new LatLng(position.Latitude, position.Longitude)).ToList();
            }
        }
示例#9
0
        void RemoveClicked(object sender, EventArgs e)
        {
            switch (_selectedType)
            {
            case SelectedElementType.Polyline:
                Map.MapElements.Remove(_polyline);
                _polyline = Map.MapElements.OfType <Maps.Polyline>().LastOrDefault();

                if (_polyline == null)
                {
                    Map.MapElements.Add(_polyline = new Maps.Polyline());
                }

                break;

            case SelectedElementType.Polygon:
                Map.MapElements.Remove(_polygon);
                _polygon = Map.MapElements.OfType <Maps.Polygon>().LastOrDefault();

                if (_polygon == null)
                {
                    Map.MapElements.Add(_polygon = new Maps.Polygon());
                }

                break;

            case SelectedElementType.Circle:
                Map.MapElements.Remove(_circle);
                _circle = Map.MapElements.OfType <Circle>().LastOrDefault();

                if (_circle == null)
                {
                    Map.MapElements.Add(_circle = new Circle());
                }

                break;
            }
        }