void RemovePolyline(Polyline polyline) { var native = GetNativePolyline(polyline); if (native != null) { native.Remove(); _polylines.Remove(native); } }
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); }
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); }
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; }
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; } }
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); }
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); }
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(); } }
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; } }