Generate interactive plot HTML map

This guide demonstrates how to use the plot_html_map() function from the forplotR package. The function creates a self-contained interactive HTML map (Leaflet) for ForestPlots data, converting subplot (X, Y) to geographic coordinates using the four plot corners, styling points by collection status (palms / collected / missing), and embedding voucher photo carousels when images are available.

Function Overview

The plot_html_map() function:

  • Reads a ForestPlots-style Excel with vouchered trees and extracts metadata (team, plot name, plot code).

  • Converts local subplot coordinates to latitude/longitude using the 4 corner vertices.

  • Draws the plot polygon and a subplot grid (toggleable).

  • Colors points by status: Palms = yellow, Collected = gray, Not collected = red.

  • Builds image carousels in popups when matching voucher folders exist.

  • Adds a filter sidebar (family, species, status, with photos, subplots; plus search box).

  • Saves a standalone HTML.

Basic Example (vertices in data frame)

vertex_df <- data.frame(
  Latitude  = c(-3.1230, -3.1230, -3.1250, -3.1250),
  Longitude = c(-60.0120, -60.0100, -60.0120, -60.0100)
)

plot_html_map(
  fp_file_path  = "data/tree_data.xlsx",
  vertex_coords = vertex_df,
  subplot_size  = 10,
  voucher_imgs  = "voucher_imgs",
  filename      = "plot_map.html"
)

Using an Excel file for the plot corners

plot_html_map(
  fp_file_path  = "data/tree_data.xlsx",
  vertex_coords = "data/plot_vertices.xlsx",  # sheet with Latitude/Longitude
  voucher_imgs  = "voucher_imgs",
  filename      = "plot_map_from_xlsx.html"
)

Without photos (no voucher images folder)

plot_html_map(
  fp_file_path  = "data/tree_data.xlsx",
  vertex_coords = "data/plot_vertices.xlsx",
  voucher_imgs  = NULL,                        # popups without carousels
  filename      = "plot_map_no_photos.html"
)

Output

The function saves a standalone HTML file (all assets embedded) named as specified by filename (often with a date prefix, depending on your wrapper). The map includes:

Base layers (street/satellite/topo/dark).

Plot boundary polygon and optional subplot grid (toggle in the layer control).

Point popups with Tag, Subplot, Family, Species, DBH, Voucher, and photos when found.

You can open the file directly in a browser or share it.

# after running plot_html_map()
list.files(pattern = "plot_map.*\\.html$")

Tips

  • Vertices order: Keep the four corners in a consistent loop (e.g., clockwise). If your polygon self-intersects, check order.

  • Signs: The function normalizes coordinates; verify latitude/longitude signs (southern/western hemispheres are negative).

  • Photos: Organize images under voucher_imgs////… to enable the carousel in popups.

  • Performance: Large plots benefit from fewer visible layers (hide subplot grid) and smaller marker radii.

  • Metadata: Plot name/code/team are parsed from the first row of the ForestPlots sheet.