init
This commit is contained in:
commit
116abafc09
58 changed files with 5749 additions and 0 deletions
315
R/symbolizers.R
Normal file
315
R/symbolizers.R
Normal file
|
|
@ -0,0 +1,315 @@
|
|||
#' Create a Polygon Symbolizer
|
||||
#'
|
||||
#' @description
|
||||
#' Creates a polygon symbolizer for rendering filled polygon features.
|
||||
#'
|
||||
#' @param fill Character. Fill color for the polygon. Can be a CSS color
|
||||
#' string or a function specification.
|
||||
#' @param stroke Character. Stroke (outline) color. Default is NULL (no stroke).
|
||||
#' @param width Numeric. Stroke width in pixels. Default is 1.
|
||||
#' @param opacity Numeric. Fill opacity from 0 to 1. Default is 1.
|
||||
#' @param pattern Character. Fill pattern. One of NULL, "hatch", or "dot".
|
||||
#' @param ... Additional symbolizer options.
|
||||
#'
|
||||
#' @return A list representing the symbolizer configuration.
|
||||
#'
|
||||
#' @examples
|
||||
#' # Simple blue fill
|
||||
#' pmPolygonSymbolizer(fill = "steelblue")
|
||||
#'
|
||||
#' # With stroke
|
||||
#' pmPolygonSymbolizer(fill = "#f0f0f0", stroke = "#333", width = 2)
|
||||
#'
|
||||
#' @export
|
||||
pmPolygonSymbolizer <- function(fill = "#cccccc",
|
||||
stroke = NULL,
|
||||
width = 1,
|
||||
opacity = 1,
|
||||
pattern = NULL,
|
||||
...) {
|
||||
opts <- list(fill = fill, ...)
|
||||
|
||||
if (!is.null(stroke)) opts$stroke <- stroke
|
||||
if (width != 1) opts$width <- width
|
||||
if (opacity != 1) opts$opacity <- opacity
|
||||
if (!is.null(pattern)) opts$pattern <- pattern
|
||||
|
||||
list(
|
||||
type = "polygon",
|
||||
options = opts
|
||||
)
|
||||
}
|
||||
|
||||
|
||||
#' Create a Line Symbolizer
|
||||
#'
|
||||
#' @description
|
||||
#' Creates a line symbolizer for rendering line features.
|
||||
#'
|
||||
#' @param color Character. Line color. Default is "#000000".
|
||||
#' @param width Numeric or function. Line width in pixels. Can be a fixed
|
||||
#' value or a zoom-dependent specification.
|
||||
#' @param dash List or NULL. Dash pattern as a vector of numbers, e.g.,
|
||||
#' \code{c(4, 2)} for 4px dash, 2px gap.
|
||||
#' @param dashColor Character. Color for dashes if using dash pattern.
|
||||
#' @param dashWidth Numeric. Width of dashes.
|
||||
#' @param lineCap Character. Line cap style: "butt", "round", or "square".
|
||||
#' @param lineJoin Character
|
||||
#' . Line join style: "miter", "round", or "bevel".
|
||||
#' @param opacity Numeric. Line opacity from 0 to 1. Default is 1.
|
||||
#' @param ... Additional symbolizer options.
|
||||
#'
|
||||
#' @return A list representing the symbolizer configuration.
|
||||
#'
|
||||
#' @examples
|
||||
#' # Simple black line
|
||||
#' pmLineSymbolizer(color = "black", width = 2)
|
||||
#'
|
||||
#' # Dashed line
|
||||
#' pmLineSymbolizer(color = "gray", width = 1, dash = c(4, 2))
|
||||
#'
|
||||
#' @export
|
||||
pmLineSymbolizer <- function(color = "#000000",
|
||||
width = 1,
|
||||
dash = NULL,
|
||||
dashColor = NULL,
|
||||
dashWidth = NULL,
|
||||
lineCap = NULL,
|
||||
lineJoin = NULL,
|
||||
opacity = 1,
|
||||
...) {
|
||||
opts <- list(color = color, width = width, ...)
|
||||
|
||||
if (!is.null(dash)) opts$dash <- dash
|
||||
if (!is.null(dashColor)) opts$dashColor <- dashColor
|
||||
if (!is.null(dashWidth)) opts$dashWidth <- dashWidth
|
||||
if (!is.null(lineCap)) opts$lineCap <- lineCap
|
||||
if (!is.null(lineJoin)) opts$lineJoin <- lineJoin
|
||||
if (opacity != 1) opts$opacity <- opacity
|
||||
|
||||
list(
|
||||
type = "line",
|
||||
options = opts
|
||||
)
|
||||
}
|
||||
|
||||
|
||||
#' Create a Circle Symbolizer
|
||||
#'
|
||||
#' @description
|
||||
#' Creates a circle symbolizer for rendering point features as circles.
|
||||
#'
|
||||
#' @param radius Numeric. Circle radius in pixels. Default is 4.
|
||||
#' @param fill Character. Fill color for the circle. Default is "#000000".
|
||||
#' @param stroke Character. Stroke (outline) color. Default is NULL.
|
||||
#' @param width Numeric. Stroke width in pixels. Default is 1.
|
||||
#' @param opacity Numeric. Fill opacity from 0 to 1. Default is 1.
|
||||
#' @param ... Additional symbolizer options.
|
||||
#'
|
||||
#' @return A list representing the symbolizer configuration.
|
||||
#'
|
||||
#' @examples
|
||||
#' # Simple red circle
|
||||
#' pmCircleSymbolizer(radius = 6, fill = "red")
|
||||
#'
|
||||
#' # Circle with stroke
|
||||
#' pmCircleSymbolizer(radius = 8, fill = "white", stroke = "black", width = 2)
|
||||
#'
|
||||
#' @export
|
||||
pmCircleSymbolizer <- function(radius = 4,
|
||||
fill = "#000000",
|
||||
stroke = NULL,
|
||||
width = 1,
|
||||
opacity = 1,
|
||||
...) {
|
||||
opts <- list(radius = radius, fill = fill, ...)
|
||||
|
||||
if (!is.null(stroke)) opts$stroke <- stroke
|
||||
if (width != 1) opts$width <- width
|
||||
if (opacity != 1) opts$opacity <- opacity
|
||||
|
||||
list(
|
||||
type = "circle",
|
||||
options = opts
|
||||
)
|
||||
}
|
||||
|
||||
|
||||
#' Create a Text Symbolizer
|
||||
#'
|
||||
#' @description
|
||||
#' Creates a text symbolizer for rendering text labels.
|
||||
#'
|
||||
#' @param font Character. Font specification (e.g., "12px sans-serif").
|
||||
#' @param fill Character. Text fill color. Default is "#000000".
|
||||
#' @param stroke Character. Text stroke (halo) color. Default is NULL.
|
||||
#' @param width Numeric. Stroke width for text halo. Default is 0.
|
||||
#' @param labelProps List. Properties to use for label text, in order of
|
||||
#' preference. Default is \code{list("name")}.
|
||||
#' @param textTransform Character. Text transformation: "uppercase",
|
||||
#' "lowercase", or NULL.
|
||||
#' @param ... Additional symbolizer options.
|
||||
#'
|
||||
#' @return A list representing the symbolizer configuration.
|
||||
#'
|
||||
#' @examples
|
||||
#' # Simple text label
|
||||
#' pmTextSymbolizer(font = "12px Arial", fill = "black")
|
||||
#'
|
||||
#' # Text with halo
|
||||
#' pmTextSymbolizer(font = "14px sans-serif", fill = "black",
|
||||
#' stroke = "white", width = 2)
|
||||
#'
|
||||
#' @export
|
||||
pmTextSymbolizer <- function(font = "12px sans-serif",
|
||||
fill = "#000000",
|
||||
stroke = NULL,
|
||||
width = 0,
|
||||
labelProps = NULL,
|
||||
textTransform = NULL,
|
||||
...) {
|
||||
opts <- list(font = font, fill = fill, ...)
|
||||
|
||||
if (!is.null(stroke)) opts$stroke <- stroke
|
||||
if (width > 0) opts$width <- width
|
||||
if (!is.null(labelProps)) opts$labelProps <- labelProps
|
||||
if (!is.null(textTransform)) opts$textTransform <- textTransform
|
||||
|
||||
list(
|
||||
type = "text",
|
||||
options = opts
|
||||
)
|
||||
}
|
||||
|
||||
|
||||
#' Create a Centered Text Symbolizer
|
||||
#'
|
||||
#' @description
|
||||
#' Creates a centered text symbolizer for rendering text labels centered
|
||||
#' on point features.
|
||||
#'
|
||||
#' @param font Character. Font specification (e.g., "12px sans-serif").
|
||||
#' @param fill Character. Text fill color. Default is "#000000".
|
||||
#' @param stroke Character. Text stroke (halo) color. Default is NULL.
|
||||
#' @param width Numeric. Stroke width for text halo. Default is 0.
|
||||
#' @param lineHeight Numeric. Line height multiplier for multi-line labels.
|
||||
#' Default is NULL (uses library default). Use values like 1.0-1.2 for
|
||||
#' tighter spacing.
|
||||
#' @param labelProps List. Properties to use for label text, in order of
|
||||
#' preference. Default is \code{list("name")}.
|
||||
#' @param ... Additional symbolizer options.
|
||||
#'
|
||||
#' @return A list representing the symbolizer configuration.
|
||||
#'
|
||||
#' @examples
|
||||
#' pmCenteredTextSymbolizer(font = "14px Arial", fill = "black")
|
||||
#'
|
||||
#' # Tighter line spacing for multi-word labels
|
||||
#' pmCenteredTextSymbolizer(font = "11px sans-serif", fill = "#444",
|
||||
#' lineHeight = 1.1)
|
||||
#'
|
||||
#' @export
|
||||
pmCenteredTextSymbolizer <- function(font = "12px sans-serif",
|
||||
fill = "#000000",
|
||||
stroke = NULL,
|
||||
width = 0,
|
||||
lineHeight = NULL,
|
||||
labelProps = NULL,
|
||||
...) {
|
||||
opts <- list(font = font, fill = fill, ...)
|
||||
|
||||
if (!is.null(stroke)) opts$stroke <- stroke
|
||||
if (width > 0) opts$width <- width
|
||||
if (!is.null(lineHeight)) opts$lineHeight <- lineHeight
|
||||
if (!is.null(labelProps)) opts$labelProps <- labelProps
|
||||
|
||||
list(
|
||||
type = "centeredText",
|
||||
options = opts
|
||||
)
|
||||
}
|
||||
|
||||
|
||||
#' Create a Line Label Symbolizer
|
||||
#'
|
||||
#' @description
|
||||
#' Creates a line label symbolizer for rendering text labels along line
|
||||
#' features (e.g., street names).
|
||||
#'
|
||||
#' @param font Character. Font specification (e.g., "12px sans-serif").
|
||||
#' @param fill Character. Text fill color. Default is "#000000".
|
||||
#' @param stroke Character. Text stroke (halo) color. Default is NULL.
|
||||
#' @param width Numeric. Stroke width for text halo. Default is 0.
|
||||
#' @param labelProps List. Properties to use for label text.
|
||||
#' @param ... Additional symbolizer options.
|
||||
#'
|
||||
#' @return A list representing the symbolizer configuration.
|
||||
#'
|
||||
#' @examples
|
||||
#' pmLineLabelSymbolizer(font = "11px Arial", fill = "#333",
|
||||
#' stroke = "white", width = 2)
|
||||
#'
|
||||
#' @export
|
||||
pmLineLabelSymbolizer <- function(font = "12px sans-serif",
|
||||
fill = "#000000",
|
||||
stroke = NULL,
|
||||
width = 0,
|
||||
labelProps = NULL,
|
||||
...) {
|
||||
opts <- list(font = font, fill = fill, ...)
|
||||
|
||||
if (!is.null(stroke)) opts$stroke <- stroke
|
||||
if (width > 0) opts$width <- width
|
||||
if (!is.null(labelProps)) opts$labelProps <- labelProps
|
||||
|
||||
list(
|
||||
type = "lineLabel",
|
||||
options = opts
|
||||
)
|
||||
}
|
||||
|
||||
|
||||
#' Create a Shield Symbolizer
|
||||
#'
|
||||
#' @description
|
||||
#' Creates a shield symbolizer for rendering labeled badges or shields
|
||||
#' (e.g., highway route markers).
|
||||
#'
|
||||
#' @param font Character. Font specification for shield text.
|
||||
#' @param fill Character. Text fill color. Default is "#000000".
|
||||
#' @param background Character. Shield background color. Default is "#ffffff".
|
||||
#' @param stroke Character. Shield border color. Default is "#000000".
|
||||
#' @param padding Numeric. Padding inside the shield in pixels. Default is 2.
|
||||
#' @param labelProps List. Properties to use for shield text.
|
||||
#' @param ... Additional symbolizer options.
|
||||
#'
|
||||
#' @return A list representing the symbolizer configuration.
|
||||
#'
|
||||
#' @examples
|
||||
#' pmShieldSymbolizer(font = "10px Arial", fill = "black",
|
||||
#' background = "white", stroke = "black")
|
||||
#'
|
||||
#' @export
|
||||
pmShieldSymbolizer <- function(font = "10px sans-serif",
|
||||
fill = "#000000",
|
||||
background = "#ffffff",
|
||||
stroke = "#000000",
|
||||
padding = 2,
|
||||
labelProps = NULL,
|
||||
...) {
|
||||
opts <- list(
|
||||
font = font,
|
||||
fill = fill,
|
||||
background = background,
|
||||
stroke = stroke,
|
||||
padding = padding,
|
||||
...
|
||||
)
|
||||
|
||||
if (!is.null(labelProps)) opts$labelProps <- labelProps
|
||||
|
||||
list(
|
||||
type = "shield",
|
||||
options = opts
|
||||
)
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue