Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

add tileOptions() to addRasterImage() #508

Open
wants to merge 4 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions NEWS
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,8 @@ leaflet 2.0.0

* Added `method` argument to `addRasterImage()` to enable nearest neighbor interpolation when projecting categorical rasters (#462)

* Added `options` argument to `addRasterImage()` to give finer control over the added tile. (#507)

* Added an `'auto'` method for `addRasterImage()`. Projected factor results are coerced into factors. (9accc7e)

* Added `data` parameter to remaining `addXXX()` methods, including addLegend. (f273edd, #491, #485)
Expand Down
23 changes: 21 additions & 2 deletions R/layers.R
Original file line number Diff line number Diff line change
Expand Up @@ -203,7 +203,9 @@ epsg3857 <- "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y
#' to use to color the raster values (hint: if providing a function, set
#' \code{na.color} to \code{"#00000000"} to make \code{NA} areas transparent)
#' @param opacity the base opacity of the raster, expressed from 0 to 1
#' (deprecated, if set will overwrite \code{options})
#' @param attribution the HTML string to show as the attribution for this layer
#' (deprecated, if set will overwrite \code{options})
#' @param layerId the layer id
#' @param group the name of the group this raster image should belong to (see
#' the same parameter under \code{\link{addTiles}})
Expand All @@ -218,6 +220,9 @@ epsg3857 <- "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y
#' Ignored if \code{project = FALSE}. See \code{\link{projectRaster}} for details.
#' @param maxBytes the maximum number of bytes to allow for the projected image
#' (before base64 encoding); defaults to 4MB.
#' @param options a list of extra options for tile layers, popups, paths
#' (circles, rectangles, polygons, ...), or other map elements
#' @seealso \code{\link{tileOptions}}
#' @template data-getMapData
#'
#' @examples
Expand All @@ -234,13 +239,14 @@ addRasterImage <- function(
map,
x,
colors = if (raster::is.factor(x)) "Set1" else "Spectral",
opacity = 1,
opacity = NULL,
attribution = NULL,
layerId = NULL,
group = NULL,
project = TRUE,
method = c("auto", "bilinear", "ngb"),
maxBytes = 4 * 1024 * 1024,
options = tileOptions(),
data = getMapData(map)
) {
stopifnot(inherits(x, "RasterLayer"))
Expand Down Expand Up @@ -302,7 +308,20 @@ addRasterImage <- function(
list(raster::ymin(bounds), raster::xmax(bounds))
)

invokeMethod(map, data, "addRasterImage", uri, latlng, opacity, attribution, layerId, group) %>%
options$detectRetina = TRUE
options$async = TRUE
# if attribution is set
if (!missing(attribution)) {
warning("argument 'attribution' is deprecated. Use options= instead.")
options$attribution <- attribution
}
# if opacity is set
if (!missing(opacity)) {
warning("argument 'opacity' is deprecated. Use options= instead.")
options$opacity <- opacity
}

invokeMethod(map, data, "addRasterImage", uri, latlng, layerId, group, options) %>%
expandLimits(
c(raster::ymin(bounds), raster::ymax(bounds)),
c(raster::xmin(bounds), raster::xmax(bounds))
Expand Down
9 changes: 2 additions & 7 deletions inst/htmlwidgets/leaflet.js
Original file line number Diff line number Diff line change
Expand Up @@ -2063,7 +2063,7 @@ methods.setGroupOptions = function (group, options) {
this.showHideGroupsOnZoom();
};

methods.addRasterImage = function (uri, bounds, opacity, attribution, layerId, group) {
methods.addRasterImage = function (uri, bounds, layerId, group, options) {
// uri is a data URI containing an image. We want to paint this image as a
// layer at (top-left) bounds[0] to (bottom-right) bounds[1].

Expand Down Expand Up @@ -2182,12 +2182,7 @@ methods.addRasterImage = function (uri, bounds, opacity, attribution, layerId, g
};
img.src = uri;

var canvasTiles = _leaflet2.default.gridLayer({
opacity: opacity,
attribution: attribution,
detectRetina: true,
async: true
});
var canvasTiles = _leaflet2.default.gridLayer(options);

// NOTE: The done() function MUST NOT be invoked until after the current
// tick; done() looks in Leaflet's tile cache for the current tile, and
Expand Down
9 changes: 2 additions & 7 deletions javascript/src/methods.js
Original file line number Diff line number Diff line change
Expand Up @@ -969,7 +969,7 @@ methods.setGroupOptions = function(group, options) {
this.showHideGroupsOnZoom();
};

methods.addRasterImage = function(uri, bounds, opacity, attribution, layerId, group) {
methods.addRasterImage = function(uri, bounds, layerId, group, options) {
// uri is a data URI containing an image. We want to paint this image as a
// layer at (top-left) bounds[0] to (bottom-right) bounds[1].

Expand Down Expand Up @@ -1090,12 +1090,7 @@ methods.addRasterImage = function(uri, bounds, opacity, attribution, layerId, gr
};
img.src = uri;

let canvasTiles = L.gridLayer({
opacity: opacity,
attribution: attribution,
detectRetina: true,
async: true
});
let canvasTiles = L.gridLayer(options);

// NOTE: The done() function MUST NOT be invoked until after the current
// tick; done() looks in Leaflet's tile cache for the current tile, and
Expand Down
17 changes: 13 additions & 4 deletions man/addRasterImage.Rd

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.