-
Donut count labels use the same overlap and collision-placement rules as their icons, preventing collision-hidden numbers inside visible donuts for native and precomputed clusters. Ordinary circle-cluster labels are unchanged.
-
Interactive categorical legends preserve hexagon and custom SVG patch shapes when toggling categories or resetting filters.
-
Clusters can be drawn as donut charts showing each cluster's category mix with
cluster_options(donut_column = ), for live GeoJSON clustering and pre-clustered vector tiles. -
add_layer()gains ametadataargument. -
Abbreviated cluster count labels now switch to millions and billions (e.g. "1.7M" or "1.5B" instead of "1735k" or "1500M").
-
Clustered layers now render in
compare()views, and cluster circle paint options (circle_opacity, strokes, blur) now reach maps updated through a Shiny proxy. -
Update Mapbox GL JS to v3.31.0, which brings a much smaller memory footprint for large GeoJSON sources.
-
Raster PMTiles sources on Mapbox maps now use Mapbox GL JS's native PMTiles support. The custom
pmtile-sourceplugin, which stopped loading on Mapbox GL JS v3.29+, has been removed. -
Popups and tooltips support conditional logic evaluated per feature at render time, with new builders
if_else_expr(),case_expr(),coalesce_expr(),has_column(),is_blank(), andhtml_escape_expr()that compose withconcat(),get_column(), andnumber_format(). Useful for remote sources like PMTiles where popup columns can't be precomputed. See?conditional_expressions. -
The popup/tooltip expression evaluator supports a broad set of GL-style conditional, comparison, boolean, lookup, math, ramp, and string operators, so
match_expr()andstep_expr()output also works as popup/tooltip content. Unknown or failing operators render as an empty string with a console warning. -
Legends gain optional
min_zoomandmax_zoomarguments to show or hide a legend on zoom, with the same semantics as the layer arguments of the same names. -
Legends sharing a corner position now stack automatically instead of overlapping, and reflow as legends are shown or hidden. Legends with explicit
margin_*values or that have been dragged are left alone. -
Adding a legend with the default
add = FALSEto a map that already has one now messages that the existing legend is being replaced. -
add_legend(draggable = TRUE)now works incompare(). -
add_draw_control()gains aproviderargument that can be set to"terra-draw"to use the Terra Draw drawing engine as an alternative to mapbox-gl-draw (which remains the default; existing code is unaffected). Terra Draw works identically on Mapbox and MapLibre maps, standalone and incompare(), and is fully integrated with the existing drawing workflow:get_drawn_features(),add_features_to_draw(),clear_drawn_features(),clear_controls("draw"), attribute editing viaattributes, live measurements viashow_measurements, the download button, and the styling arguments all work unchanged. (As with the default provider, attribute editing and measurements are available on standalone widgets only, not incompare().) Details:- A new
modesargument selects the toolbar tools:"point","linestring","polygon","rectangle","circle","freehand","freehand-linestring","angled-rectangle","sector","sensor","curve","curve-linestring", and"select"— Terra Draw's select mode supports dragging features, dragging/deleting vertices, midpoint insertion, and optional rotate/scale/resize and snapping. - The
"curve"and"curve-linestring"modes are mapgl-authored pen-tool drawing modes for shapes mixing straight and curved (cubic Bezier) edges — e.g. a basketball key or a river trace. Click places a corner; click-and-drag places an anchor and pulls out curve handles; click the first point or press Enter to finish, Escape to cancel, Backspace to remove the last point. Output is the rendered curved geometry (so measurements, downloads, andget_drawn_features()work unchanged) with the control points preserved in acurveNodesJSON-string column; finished curves can be moved (control points follow) but not vertex-edited, and map panning is suspended while a curve tool is active. - A new
terradraw_options()helper configures advanced behavior (select-mode editing flags, snapping, drawing interaction style, per-mode overrides) via the newoptionsargument. add_terradraw_control()is an equivalent convenience wrapper foradd_draw_control(provider = "terra-draw")whose signature contains only the arguments that apply to the Terra Draw engine.- Drawn features returned by
get_drawn_features()include amodecolumn recording which tool created each feature; circles additionally carry aradiusKilometersproperty. - The trash button deletes the current selection only (use
clear_drawn_features()to remove everything); when the mode set includes"select", finishing a shape returns to the select tool with the new feature selected — setterradraw_options(keep_mode_active = TRUE)to stay in the drawing mode instead. - Features loaded from a
sourceoradd_features_to_draw()are adapted to Terra Draw's constraints: Multi* geometries are split into single-part features, coordinates are rounded to Terra Draw's 9-decimal-place precision limit (~0.1 mm), and polygon holes are removed. Colors are coerced to the 6-digit hex form Terra Draw requires. - Changing the map style preserves drawn features; an unfinished drawing is discarded and the selection and undo history reset.
- A new
-
The layers control from
add_layers_control()is now a first-class map control: it is added through the GLaddControl()API and stacks with the other controls in its corner (in call order) instead of floating over them, so it no longer collides with navigation, fullscreen, and similar controls. Related changes:- Visual change: the default appearance now matches the native controls — white background, monochrome items (active layers in dark text, inactive in gray), and a 29x29 collapsed icon button. All styling arguments work as before; to restore the previous blue active style, use
active_color = "#4a90e2"andactive_text_color = "#ffffff". - The
margin_*arguments are no longer applied by default (the native stack handles spacing) but are still honored when explicitly set. - In
compare(), each side's layers control now lives in that side's own control stack (previously both sides rendered into the same overlay space and overlapped), custom colors are now honored, layer-linked legends now show/hide with their layers, andclear_controls("layers")now works (previously it errored or did nothing). - A layers control added through a MapLibre compare proxy now toggles layers only on the side targeted by
map_side(previously it toggled every side at once). - When a proxy call omits
layers, the control now lists the map's non-basemap style layers instead of rendering empty. Note this covers regular GL layers only (flowmap layers are managed outside the style), and the basemap filter reflects the initially loaded style. - After
set_style(), the control now reflects each layer's restored visibility instead of resetting every entry to active.
- Visual change: the default appearance now matches the native controls — white background, monochrome items (active layers in dark text, inactive in gray), and a 29x29 collapsed icon button. All styling arguments work as before; to restore the previous blue active style, use
-
add_layers_control()gains amodeargument. The default"multiple"keeps the current independent toggles;mode = "single"shows one entry at a time — activating an entry turns the others (and their linked legends) off, which suits flipping through alternative analytical layers or raster imagery. To mix both behaviors on one map, add a"single"-mode control alongside a"multiple"-mode control; they stack cleanly in the same corner. -
Various bug fixes and performance improvements (#30, #131, #150, #212, #215, #216, #217, #219).
-
Tooltips and popups now accept
{brace}templates package-wide. Any layer'stooltip/popup(andset_tooltip()/set_popup()) can take a glue-style template such as"{name}: {population}", in addition to the existing column name andconcat()/number_format()expression forms; substituted values are HTML-escaped. -
New
tooltip_style()/popup_style()helpers theme tooltips and popups without hand-written HTML/CSS, mirroringlegend_style(). Pass a preset ("light"/"dark") or custom appearance (background, border, radius, font, padding, shadow) to the newtooltip_style/popup_styleargument on layer functions (andset_tooltip()/set_popup()). Tooltips are unstyled by default, so existing maps are unchanged. -
New
add_flowmap()draws animated origin-destination flow maps powered by Flowmap.gl (deck.gl). It supports temporal flows, location clustering, customizable color schemes (flowmap_color_schemes()), CSS blend modes, and themeable tooltips and popups (per-object-type content vialist(location = , flow = ), styled withtooltip_style()/popup_style()). Flow filters and settings can be updated reactively in Shiny withset_flowmap_filter()andset_flowmap_settings(), and a"window"-modeadd_slider_control()can drive a flowmap's temporal range. The heavy flow-mapping libraries load on demand, so maps without a flowmap are unaffected. Adapted from Egor Kotov's contribution in #205, with the bundledbixi_locationsandbixi_flowsdatasets as a ready-to-use example. -
New
add_slider_control()adds an interactive slider that filters and/or animates one or more layers by a numeric feature property. It composes with a layer's initialfilter, laterset_filter()calls, and interactive legends (intersecting via["all", ...]) rather than replacing them. Modes are"sequential"(one value),"cumulative"(everything through a value), and"window"(a selected range that can also drive flowmap time ranges;window_behaviorchooses a"resizable"two-edge range or a"fixed"-width band you pan). Two presentations: the default"compact"slider, orpresentation = "timeline"— a prominent, brushable histogram (drag the selected window across the bars, drag its edges to resize) modeled on Egor Kotov's FlowMapBlue time control (#205). Supports paint-property animation, an optional play button, and an optional density histogram (histogram/histogram_data/counts, drawn with d3 loaded on demand). Newslider_style()presets and overrides control the container, play button, track, thumb, and histogram appearance, anddraggable = TRUElets the user reposition the panel anywhere on the map (as withadd_legend()). Companionsupdate_slider_control()(for Shiny proxies) andas_time_property()(coerceDate/POSIXctto a numeric filter property) round out the feature. -
add_categorical_legend()andadd_legend()gain apatch_spacingargument ("uniform"/"proportional"). With"proportional", each legend row's height tracks its own symbol size, giving proportional vertical spacing for graduated-symbol legends; the default"uniform"preserves existing behavior (#206, thanks to @mtennekes). -
New
add_h3t_source()adds a tiled H3 (h3t) source for MapLibre maps, fetching only the H3 cells in the current viewport from a{z}/{x}/{y}tile endpoint via theh3tiles://protocol — a scalable alternative toadd_h3j_source()for large datasets. Works with multiple sources per map and on both sides ofcompare(). Bundledh3j-h3tlibrary updated to 0.9.7 (#199, thanks to @bbest). -
Update MapLibre GL JS to v5.24.0 and Mapbox GL JS to v3.24.0.
-
Fixed
add_legend()silently ignoring thetargetargument for MapLibre compare widgets: the compare dispatch checked for class"maplibre_compare"while the widget class is"maplibregl_compare", so legends were attached as regular map legends instead of compare-level legends. -
compare()now supports synchronizing more than two maps (#204). Pass additional maps aftermap1andmap2withmode = "sync", and control the grid layout with the newncolargument. In Shiny, maps in multi-map widgets are addressed as"map1"through"mapN"viamap_sidein the compare proxy functions (integers also accepted, e.g.map_side = 3), and emit input values likeinput$id_map3_view. Legends can be targeted at individual grid maps withtarget = "map3". -
New bivariate mapping support with
bivariate_scale(),bivariate_palettes(), andadd_bivariate_legend(). Bivariate scales use 3-by-3 palettes, support custom 3-by-3 color matrices, optionalx_breaksandy_breaksfor stable bins, and explicitna_colorhandling (#181). -
Continuous legends can now expose an opt-in color-ramp picker. Use
color_ramps,selected_ramp, andramp_picker = TRUEwith continuous legends to let readers switch palettes directly from the legend; named ramps display labels by default, andramp_labels = FALSEcreates a compact picker. -
interpolate_palette()now carries additional scale metadata for downstream legends, including the source column, missing-value color, available color ramps, and selected ramp. -
Compare maps now initialize legend interactivity assets so supported dynamic legend features can be used in compare views.
-
GitHub source archives are now slimmed with
.gitattributes export-ignorerules for generated site and vignette assets. This preserves GitHub Pages content in the repository while avoiding large downloads during GitHub-based package installs.
-
New
save_map()function renders a map widget to a static PNG file using headless Chrome via the chromote package. Supports options for hiding controls, including/excluding legends and scale bars, replacing the basemap with a solid color, and retina-quality output withimage_scale. Newprint_map()function provides the same capability for use in Quarto and R Markdown documents. -
Update MapLibre GL JS to v5.22.0 and Mapbox GL JS to v3.21.0.
-
Mapbox GL JS v3.21.0 adds native PMTiles support via the TileProvider API.
add_pmtiles_source()now uses the native vector tile path for Mapbox, removing the need for the custom PMTiles source implementation for vector tiles. -
Support for color tables and categorical rasters in
add_image_source()(#21). -
New layer properties:
circle_emissive_strength,circle_pitch_alignment,circle_pitch_scale,fill_pattern_cross_fade,line_elevation_reference,line_elevation_ground_scale,line_pattern_cross_fade,fill_extrusion_emissive_strength,fill_extrusion_ambient_occlusion_intensity,fill_extrusion_ambient_occlusion_radius,fill_extrusion_cast_shadows,fill_extrusion_cutoff_fade_range,fill_extrusion_vertical_gradient,raster_color,raster_color_mix,raster_color_range,raster_emissive_strength,icon_occlusion_opacity,text_occlusion_opacity. -
sfcgeometry vectors are now accepted whereversfobjects are accepted, including layer functions, quickview functions, and theboundsparameter (#177). -
Various bug fixes and performance improvements (see GitHub issues for full list).
-
Esri styles support: New
esri_style()function provides access to Esri basemap styles for use with MapLibre maps, with support for ArcGIS API key authentication. -
MLT format support: Updated PMTiles implementation to support the MapLibre Tiles (MLT) format.
-
Update Mapbox GL JS to v3.19.1 and MapLibre GL JS to v5.19.0.
-
Bug fixes and improvements:
- Fixed interactive legend edge case where max value could disappear when adjusting the low-end slider (#167)
- Fixed control stacking issue when reactives are used in map initialization functions
- Improved
add_reset_control()button to match the visual style of other navigation controls (#168) - Fixed trailing slash in Mapbox GL JS CDN URLs that could cause 404 errors on library load (#176)
- Geocoder control now properly hidden when using screenshot control (#169)
- Fixed
set_source()not working withmaplibre_compare_proxy()andmapboxgl_compare_proxy()(#171) - Documentation updates (#175)
-
Update Mapbox GL JS to v3.17.0 and MapLibre GL JS to v5.15.0.
-
Interactive legends: New opt-in interactivity for map legends enables direct data filtering from the legend:
- Categorical legends: Click legend items to toggle category visibility on the map. Disabled categories are visually indicated with reduced opacity and strikethrough text.
- Continuous legends: Drag dual handles on the gradient bar to filter data within a selected range. Ghost overlays indicate excluded regions, and the middle section can be dragged to pan the selection window.
- New parameters
interactive = TRUE,filter_column,filter_values, andclassificationin legend functions - Smart number formatting with K/M notation for large values in legend labels
- New
interactive_legendparameter inmaplibre_view()andmapboxgl_view()for quick interactive visualizations - Full Shiny integration with filter state available via input values
- Works with GeoJSON, vector tiles, and PMTiles sources
-
Draggable legends: New
draggable = TRUEparameter allows users to drag legends to any position on the map. Supports both mouse and touch interactions. -
Screenshot control: New
add_screenshot_control()function allows users to capture and download map screenshots as PNG images. Includesimage_scaleparameter for controlling output resolution. -
Globe projection for compare views: Compare maps in MapLibre now properly respect globe projection when specified.
-
Bug fixes and improvements:
- Fixed floating-point precision issue in interactive legend filters that could exclude edge values
- Fixed continuous legend error when values are pre-formatted character strings (e.g., from
get_legend_labels()) - Fixed draw control source handling for better feature management (#164)
- Fixed
step_expr()to properly handle quoted column names (#148) - Fixed layer visibility state synchronization on style changes (#159)
- Images added via
add_image()now persist acrossset_style()calls - Measurement display box properly removed when draw control is cleared
- Added warning when fill extrusion layers are used with MapLibre globe projection (unsupported)
- Improved categorical color palette usage in quickview functions
- Update Mapbox GL JS, MapLibre GL JS, and Turf.js versions.
- The
boundsargument inmaplibre()andmapboxgl()now acceptssf::st_bbox()output with automatic CRS transformation to EPSG:4326. - Fixed control duplication when
set_style()is called in Shiny applications. - Fixed
clear_controls()not properly removing controls. - Added
projectionargument tomaplibre()for consistency withmapboxgl(). - Fixed tooltip/popup z-index conflicts.
- Fixed tooltips with
number_format()in comparison maps. - New
palette_to_lut()function for creating custom color lookup tables in Mapbox styles. - Improved draw control proxy functionality and element ordering.
maplibre()andmaplibre_view()now defaults to the globe projection.- Added support for raster PMTiles.
- Factor columns now handled correctly in quickview functions.
-
Enhanced draw control with new drawing modes and live measurements:
- Added rectangle drawing mode: Draw rectangles by clicking two corner points
- Added radius/circle drawing mode: Draw circles from center point to edge
- New live measurement preview system showing real-time distance, area, and perimeter calculations while drawing
- Support for metric, imperial, or both unit systems in measurements with
measurement_unitsparameter - Measurements appear during drawing, editing, and when selecting existing features
-
Advanced layers control enhancements:
- New grouped layers control: Organize layers into logical groups with collapsible sections
- Custom layer labels for improved layer identification and user experience
- Enhanced visual styling and interaction design for better usability
-
New map style support:
- Added
openfreemap_style()function providing free, open-source map styles without API key requirements
- Added
-
General improvements:
- Updated to latest Mapbox GL JS and MapLibre GL JS versions for better performance and compatibility
- Fixed MapLibre compare view functionality issues
- Improved stability across MapLibre-specific features
-
Selective control functionality: Enhanced control over which map controls are displayed and when, providing more granular customization options
-
Bug fixes and stability improvements:
- Fixed issues with layer management and control interactions
- Improved
move_layer()functionality outside of Shiny applications - Various compatibility and performance enhancements
- Client-side geospatial analysis with turf.js: Added comprehensive support for turf.js v7.2.0, enabling powerful spatial operations directly in the browser without server round-trips:
- Geometric operations:
turf_buffer(),turf_union(),turf_intersect(),turf_difference() - Spatial filtering:
turf_filter()with predicates (intersects, within, contains, crosses, disjoint) - Point analysis:
turf_convex_hull(),turf_concave_hull(),turf_voronoi(),turf_centroid(),turf_center_of_mass() - Measurement functions:
turf_distance()andturf_area()(Shiny-only) - All functions support flexible inputs: existing map layers/sources or sf objects
- Full integration with Shiny proxy objects for real-time spatial analysis in web applications
- Geometric operations:
- Added download functionality to draw control with new
download_buttonanddownload_filenameparameters inadd_draw_control(). Users can now export drawn features as GeoJSON files directly from the draw control interface. - Enhanced geocoder control with MapTiler support for MapLibre maps. New
providerparameter allows choosing between "osm" (OpenStreetMap/Nominatim) and "maptiler" providers, withmaptiler_api_keyparameter for MapTiler authentication.
- Added PMTiles support for Mapbox maps and streamlined PMTiles integration with
add_pmtiles_source()function. - New functions
query_rendered_features()andget_queried_features()allow users to directly invoke themap.queryRenderedFeatures()method from the parent libraries in Shiny apps, with guidance for users to avoid race conditions and ensure proper synchronization. Functions query visible features in the map's viewport and which can be extracted as sf objects. mapboxgl_view()andmaplibre_view()now support quick view of terra rasters. A new function,add_view(), is designed to help users quickly stack layers on top of the core view functions.
-
Added
enable_shiny_hover()function for optional hover events in Shiny applications:- Provides
_hoverinput for mouse coordinates and_feature_hoverinput for feature information - Performance-conscious design: hover functionality is disabled by default and must be explicitly enabled
- Works with both
maplibre()andmapboxgl()widgets, including compare views - Configurable options:
coordinates = TRUE/FALSEandfeatures = TRUE/FALSE - Example:
maplibre() |> add_circle_layer(...) |> enable_shiny_hover() - Compare views support: hover events include map side (
"before"or"after") in input names
- Provides
-
Comprehensive legend styling system: Major enhancement to legend functionality with extensive customization options:
- New
legend_style()function provides user-friendly interface for legend styling without requiring CSS knowledge - Container styling: background colors/opacity, borders, border radius, padding, and customizable drop shadows
- Typography control: font families (with fallbacks), sizes, weights, and colors for both title and text
- Element borders: add borders around categorical patches/circles and continuous color bars for improved visibility
- Shadow customization: control shadow color, size, and opacity for professional appearance
- Works with custom legend IDs and maintains full backward compatibility
- All legend functions now consolidated under unified
map_legendsdocumentation
- New
-
Advanced data classification system: New functions for automatic choropleth mapping similar to GIS software:
step_equal_interval(),step_quantile(), andstep_jenks()for automatic classification with equal interval, quantile, and Jenks natural breaks methodsinterpolate_palette()for continuous color scaling with multiple interpolation methods- Helper functions
get_legend_labels(),get_legend_colors(), andget_breaks()for extracting classification metadata - Comprehensive number formatting support (currency, percent, scientific, compact notation) with customizable prefixes, suffixes, and decimal places
- Seamless integration with existing legend system and step expressions
- Built on
classIntpackage for robust statistical classification algorithms
-
Enhanced MapTiler integration: Expanded support for MapTiler mapping styles:
- Added support for MapTiler style variants through new
variantparameter inmaptiler_style() - Support for light/dark variants of streets style and hybrid satellite imagery
- Improved style switching with proper handling of MapTiler-specific features
- Better integration with basemap switcher functionality
- Added support for MapTiler style variants through new
-
Robust
set_style()improvements: Fixed critical issues with dynamic style switching in Shiny applications:- Resolved #100:
set_style()now properly preserves user-added layers, sources, popups, tooltips, and other map elements when switching base styles - Enhanced state tracking system maintains map configuration across style changes
- Improved compatibility with basemap switcher controls for seamless style transitions
- Fixed legend reversion issues when changing map styles
- Better handling of map configuration properties in both regular and compare environments
- Resolved #100:
-
New
number_format()function: Comprehensive number formatting for tooltips and map content:- Support for currency, percentage, scientific notation, and compact formats
- Customizable decimal places, thousands separators, and currency symbols
- Integration with tooltip expressions for dynamic number formatting
- Works with both static content and expression-based tooltips
-
Enhanced draw control functionality with improved feature editing capabilities:
- Added ability to load existing features from map sources into the draw control for editing either when initializing the draw control or via
add_features_to_draw() - Fixed vertex styling to properly highlight selected vertices during editing
- Extended draw control support to compare views, enabling feature editing in side-by-side map comparisons
- Improved compatibility with both Mapbox GL JS and MapLibre GL JS
- Added ability to load existing features from map sources into the draw control for editing either when initializing the draw control or via
-
Fixed
hover_optionsfor vector tile sources in MapLibre (#67):- Added proper source layer handling for vector tiles when using hover effects
- Now works correctly with PMTiles and other vector tile sources that include feature IDs
- Note: Vector tiles must include feature IDs for hover effects to work. GeoJSON sources automatically generate IDs.
-
Enhanced tooltip functionality with expression support:
- Tooltips can now use expressions for dynamic content generation
- Use
get_column()to reference feature properties in tooltips - Added
concat()helper function for combining strings and expressions - Example:
tooltip = concat("<strong>Name:</strong> ", get_column("name"), "<br>Value: ", get_column("value")) - Works with both regular tooltips and
set_tooltip()in Shiny applications
- Added
mapboxgl_view()andmaplibre_view()functions for quick visualization of sf objects with automatic geometry detection and column-based styling (#102). - Added support for rain and snow effects on Mapbox GL maps with
set_rain()andset_snow()functions. - Added
add_globe_control()for MapLibre maps, allowing users to toggle between "mercator" and "globe" projections. - Fixed issue with
set_style()in Shiny applications for both Mapbox and MapLibre maps (#99). - Fixed namespacing issue in
get_drawn_features()for Shiny modules (#95). - Improved compare functionality with better control support and swiper color customization.
- Improved styling and positioning behavior of the layers control. Users can now customize the appearance of the layers control, and the layers control is collapsed by default with cleaner appearance.
Added ability to link legends to specific layers with the new
layer_idparameter inadd_legend(). When a layer is toggled in the layers control, its associated legend will automatically show or hide. - Added support for custom legend positioning with new margin parameters (
margin_top,margin_right,margin_bottom,margin_left) that allow fine-grained control over legend placement. - Fixed layers control toggle button state to correctly reflect the initial visibility of layers, resolving the issue with layers set to
visibility = "none"showing as active in the control. - Support for the
compare()plugin in Shiny applications, with new rendering and proxy functions for comparison apps in Mapbox and MapLibre. - New
modeparameter incompare()allowing users to choose between"swipe"mode with a comparison slider, and"sync"mode which displays synchronized maps side-by-side. - Updates throughout the codebase to allow features to be used in comparison maps via Shiny proxy sessions.
- A new "story map" feature allows users to build interactive story maps. View the story mapping vignette for more information.
- Various bug fixes and performance improvements; visit the package GitHub page for more details.
add_image()allows you to add your own image to the map's sprite for use as an icon / symbol layeradd_geolocate_control()adds a Geolocate control to the mapadd_globe_minimap()adds a mini globe overview map that tracks how your map moves around the globe- Support for multiple legends with the argument
add = TRUE - A
move_layer()function that gives you more fine-grained control over layer ordering in a Shiny session - Various bug fixes and performance improvements.
- Geocoding support for Mapbox and MapLibre maps added with
add_geocoder_control() - Freehand draw support in the draw toolbar with
add_draw_control(freehand = TRUE) - A "reset view" control available with
add_reset_control() - Circle clustering is streamlined with the
cluster_options()function, to be used with thecluster_optionsargument inadd_circle_layer()andadd_symbol_layer() - Various bug fixes and performance improvements.
- Initial release.