void CircleOnPropertyChanged(Circle formsCircle, PropertyChangedEventArgs e) { var nativeCircle = GetNativeCircle(formsCircle); if (nativeCircle == null) { return; } if (e.PropertyName == Circle.FillColorProperty.PropertyName) { nativeCircle.FillColor = formsCircle.FillColor.ToAndroid(); } else if (e.PropertyName == Circle.CenterProperty.PropertyName) { nativeCircle.Center = new LatLng(formsCircle.Center.Latitude, formsCircle.Center.Longitude); } else if (e.PropertyName == Circle.RadiusProperty.PropertyName) { nativeCircle.Radius = formsCircle.Radius.Meters; } else if (e.PropertyName == MapElement.StrokeColorProperty.PropertyName) { nativeCircle.StrokeColor = formsCircle.StrokeColor.ToAndroid(); } else if (e.PropertyName == MapElement.StrokeWidthProperty.PropertyName) { nativeCircle.StrokeWidth = formsCircle.StrokeWidth; } }
void RemoveCircle(Circle circle) { var native = GetNativeCircle(circle); if (native != null) { native.Remove(); _circles.Remove(native); } }
protected Circle GetFormsCircle(ACircle circle) { Circle targetCircle = null; for (int i = 0; i < Element.MapElements.Count; i++) { var mapElement = Element.MapElements[i]; if ((string)mapElement.MapElementId == circle.Id) { targetCircle = mapElement as Circle; break; } } return(targetCircle); }
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 ACircle GetNativeCircle(Circle circle) { ACircle targetCircle = null; if (_circles != null) { for (int i = 0; i < _circles.Count; i++) { var native = _circles[i]; if (native.Id == (string)circle.MapElementId) { targetCircle = native; break; } } } return(targetCircle); }
protected virtual CircleOptions CreateCircleOptions(Circle circle) { var opts = new CircleOptions() .InvokeCenter(new LatLng(circle.Center.Latitude, circle.Center.Longitude)) .InvokeRadius(circle.Radius.Meters) .InvokeStrokeWidth(circle.StrokeWidth); if (!circle.StrokeColor.IsDefault()) { opts.InvokeStrokeColor(circle.StrokeColor.ToAndroid()); } if (!circle.FillColor.IsDefault()) { opts.InvokeFillColor(circle.FillColor.ToAndroid()); } return(opts); }
void AddCircle(Circle circle) { var map = NativeMap; if (map == null) { return; } if (_circles == null) { _circles = new List <ACircle>(); } var options = CreateCircleOptions(circle); var nativeCircle = map.AddCircle(options); circle.MapElementId = nativeCircle.Id; _circles.Add(nativeCircle); }
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; } }