void AddLayers(System.Collections.IList layers) { if (layers == null) { return; } foreach (Layer layer in layers) { if (string.IsNullOrEmpty(layer.Id)) { continue; } NSString id = (NSString)("NXCustom_" + layer.Id); var oldLayer = MapView.Style.LayerWithIdentifier(id); if (oldLayer != null) { MapView.Style.RemoveLayer(oldLayer); } if (layer is CircleLayer) { var circleLayer = layer as CircleLayer; if (string.IsNullOrEmpty(circleLayer.SourceId)) { continue; } var sourceId = (NSString)("NXCustom_" + circleLayer.SourceId); var source = MapView.Style.SourceWithIdentifier(sourceId); if (source == null) { continue; } var newLayer = new MGLCircleStyleLayer(id, source); newLayer.CircleColor = MGLStyleValue.ValueWithRawValue(circleLayer.CircleColor.ToUIColor()); newLayer.CircleOpacity = MGLStyleValue.ValueWithRawValue(NSNumber.FromDouble(circleLayer.CircleOpacity)); newLayer.CircleRadius = MGLStyleValue.ValueWithRawValue(NSNumber.FromDouble(circleLayer.CircleRadius)); MapView.Style.AddLayer(newLayer); } else if (layer is LineLayer) { var lineLayer = layer as LineLayer; if (string.IsNullOrEmpty(lineLayer.SourceId)) { continue; } var sourceId = (NSString)("NXCustom_" + lineLayer.SourceId); var source = MapView.Style.SourceWithIdentifier(sourceId); if (source == null) { continue; } var newLayer = new MGLLineStyleLayer(id, source); newLayer.LineWidth = MGLStyleValue.ValueWithRawValue(NSNumber.FromDouble(lineLayer.LineWidth)); newLayer.LineColor = MGLStyleValue.ValueWithRawValue(lineLayer.LineColor.ToUIColor()); //TODO lineCap MapView.Style.AddLayer(newLayer); } } }
void AddLayer(MGLStyle style) { var source = new MGLVectorSource(identifier: "contours", configurationURL: new NSUrl("mapbox://mapbox.mapbox-terrain-v2")); var layer = new MGLLineStyleLayer(identifier: "contours", source: source); layer.SourceLayerIdentifier = "contour"; layer.LineJoin = MGLStyleValue.ValueWithRawValue(NSValue.FromObject(MGLLineJoin.Round)); layer.LineCap = MGLStyleValue.ValueWithRawValue(NSValue.FromObject(MGLLineCap.Round)); layer.LineColor = MGLStyleValue.ValueWithRawValue(UIColor.Brown); layer.LineWidth = MGLStyleValue.ValueWithRawValue(NSValue.FromObject(1.0)); style.AddSource(source); style.AddLayer(layer); contoursLayer = layer; }
private void initializeRoutesLayer() { // Just initialize with empty so that it's guaranteed that there are sources initiated // when the routes collection is still null var routeSource = new MGLShapeSource(line_source_key, new NSObject[] { }, null); nStyle.AddSource(routeSource); var borderLinesLayer = new MGLLineStyleLayer(border_line_layer_key, routeSource); borderLinesLayer.LineColor = NSExpression.FromKeyPath(border_line_color_key); borderLinesLayer.LineWidth = NSExpression.FromKeyPath(border_line_width_key); borderLinesLayer.LineJoin = NSExpression.FromConstant(NSObject.FromObject("round")); borderLinesLayer.LineCap = NSExpression.FromConstant(NSObject.FromObject("round")); nStyle.AddLayer(borderLinesLayer); var linesLayer = new MGLLineStyleLayer(line_layer_key, routeSource); linesLayer.LineColor = NSExpression.FromKeyPath(line_color_key); linesLayer.LineWidth = NSExpression.FromKeyPath(line_width_key); linesLayer.LineJoin = NSExpression.FromConstant(NSObject.FromObject("round")); linesLayer.LineCap = NSExpression.FromConstant(NSObject.FromObject("round")); nStyle.AddLayer(linesLayer); }
public static MGLLineStyleLayer GetLineLayer(MGLSource source, string lineLayerId, float minZoom, Expression filter, Expression lineColorExpression, Expression lineWidthExpression, Expression lineOffsetExpression, Expression lineOpacityExpression) { var lineLayer = new MGLLineStyleLayer(lineLayerId, source); lineLayer.SourceLayerIdentifier = (TrafficData.SOURCE_LAYER); lineLayer.LineCap = Expression.Literal(LayerProperty.LINE_CAP_ROUND).ToNative(); lineLayer.LineJoin = Expression.Literal(LayerProperty.LINE_JOIN_ROUND).ToNative(); lineLayer.LineColor = lineColorExpression.ToNative(); lineLayer.LineWidth = lineWidthExpression.ToNative(); lineLayer.LineOffset = lineOffsetExpression.ToNative(); if (lineOpacityExpression != null) { lineLayer.LineOpacity = lineOpacityExpression.ToNative(); } lineLayer.Predicate = filter.ToPredicate(); lineLayer.MinimumZoomLevel = minZoom; return(lineLayer); }
private MGLVectorStyleLayer GetStyleLayer(StyleLayer styleLayer, NSString id) { if (string.IsNullOrEmpty(styleLayer.SourceId)) { return(null); } var sourceId = styleLayer.SourceId.ToCustomId(); var source = MapView.Style.SourceWithIdentifier(sourceId); if (source == null) { return(null); } if (styleLayer is CircleLayer circleLayer) { var newLayer = new MGLCircleStyleLayer(id, source) { CircleColor = MGLStyleValue.ValueWithRawValue(circleLayer.CircleColor.ToUIColor()), CircleOpacity = MGLStyleValue.ValueWithRawValue(NSNumber.FromDouble(circleLayer.CircleOpacity)), CircleRadius = MGLStyleValue.ValueWithRawValue(NSNumber.FromDouble(circleLayer.CircleRadius)) }; if (circleLayer.StrokeColor is Color strokeColor) { newLayer.CircleStrokeColor = MGLStyleValue.ValueWithRawValue(strokeColor.ToUIColor()); newLayer.CircleStrokeOpacity = MGLStyleValue.ValueWithRawValue(NSNumber.FromDouble(circleLayer.StrokeOpacity)); newLayer.CircleStrokeWidth = MGLStyleValue.ValueWithRawValue(NSNumber.FromDouble(circleLayer.StrokeWidth)); } return(newLayer); } if (styleLayer is LineLayer lineLayer) { var newLayer = new MGLLineStyleLayer(id, source) { LineWidth = MGLStyleValue.ValueWithRawValue(NSNumber.FromDouble(lineLayer.LineWidth)), LineColor = MGLStyleValue.ValueWithRawValue(lineLayer.LineColor.ToUIColor()) }; if (lineLayer.Dashes != null && lineLayer.Dashes.Length != 0) { var arr = new NSMutableArray <NSNumber>(); foreach (double dash in lineLayer.Dashes) { arr.Add(NSNumber.FromDouble(dash)); } newLayer.LineDashPattern = MGLStyleValue.ValueWithRawValue(arr); } //TODO lineCap return(newLayer); } if (styleLayer is FillLayer fl) { var newLayer = new MGLFillStyleLayer(id, source) { FillColor = MGLStyleValue.ValueWithRawValue(fl.FillColor.ToUIColor()), FillOpacity = MGLStyleValue.ValueWithRawValue(NSNumber.FromDouble(fl.FillOpacity)) }; return(newLayer); } if (styleLayer is SymbolLayer sl) { var newLayer = new MGLSymbolStyleLayer(id, source) { IconImageName = MGLConstantStyleValue.ValueWithRawValue((NSString)sl.IconImageName), IconOpacity = MGLStyleValue.ValueWithRawValue(NSNumber.FromDouble(sl.IconOpacity)) }; return(newLayer); } return(null); }