Demo using the Leaflet interactive mapping library (see code below map).

The map shows a selection of day hikes around Queenstown, New Zealand of varying grades. Click the marker to reveal name and duration of hike and link to Google Maps.

Code:

library(dplyr)
library(leaflet)

googleURL <- function(lat, lng){
    paste0(
        'https://www.google.com/maps/search/?api=1&query=',
        lat,
        '%2C',
        lng
    )
}

makePopup <- function(name, length, lat, lng) {
    paste0(
        '<a target="_blank" href=', 
        googleURL(lat,lng),
        '>',
        name,
        '</a><br>',
        length, 
        ' hours'
    )
}

trails <- tibble(
    name = 'Queenstown Hill', length = 3, grade = 'Medium',
    lat = -45.02739840096245, lng = 168.66671562832803
) %>%
    add_row(
        name = 'Queenstown Gardens', length = 0.5, grade = 'Easy',
        lat = -45.03194737861049, lng = 168.65615031303986
        ) %>%
    add_row(
        name = 'Franktom Arm Walkway', length = 1.5, grade = 'Easy',
        lat = -45.045250433170686, lng = 168.68116663370773
    ) %>%
    add_row(
        name = 'Kelvin Peninsula Walkwaty', length = 1.5, grade = 'Easy',
        lat = -45.02908276884795, lng = 168.73237468516353
    ) %>%
    add_row(
        name = 'Jack\'s Point to Jardine Park', length = 2.5, grade = 'Difficult',
        lat = -45.08044977940483, lng = 168.72694640244626
    ) %>%
    add_row(
        name = 'Tiki Trail', length = 1, grade = 'Medium',
        lat = -45.028688228408456, lng = 168.65603804276006
    ) %>%
    add_row(
        name = 'One Mile Creek Trail', length = 4, grade = 'Difficult',
        lat = -45.000467129255355, lng = 168.62877553898514
    ) %>%
    add_row(
        name = 'Arrow River Trail', length = 1, grade = 'Easy',
        lat = -44.93763728807441, lng = 168.83252306320583
    ) %>%
    add_row(
        name = 'Bush Creek Trail', length = 1, grade = 'Easy',
        lat = -44.93804748481571, lng = 168.83005382757165
    ) %>%
    add_row(
        name = 'Big Hill Trail', length = 4, grade = 'Difficult',
        lat = -44.92211595991365, lng = 168.82136623099498
    ) %>%
    add_row(
        name = 'Sawpit Gully Trail', length = 3, grade = 'Difficult',
        lat = -44.93552107810251, lng = 168.83024644858804
    ) %>%
    add_row(
        name = 'Macetown Ghost Town Trail', length = 5, grade = 'Medium',
        lat = -44.866564329102864, lng = 168.81964037310377
    ) %>%
    add_row(
        name = 'Lake Hayes Walkway', length = 2, grade = 'Medium',
        lat = -44.98979215604306, lng = 168.80987952258636
    ) %>%
    add_row(
        name = 'Tobins Track', length = 1, grade = 'Medium',
        lat = -44.94091794567632, lng = 168.84063145556857
    ) %>%
    add_row(
        name = 'Remarkables Ultimate Viewpoint', length = 3, grade = 'Difficult',
        lat = -45.053765139424925, lng = 168.81284583456133
    ) %>%
    add_row(
        name = 'Moke Lake', length = 2, grade = 'Medium',
        lat = -44.99745942401925, lng = 168.57198331694377
    ) %>%
    add_row(
        name = 'Mount Chrichton Loop Track', length = 6, grade = 'Difficult',
        lat = -45.06683418071994, lng = 168.53652809552435
    ) %>%
    mutate(grade = factor(grade, levels=c('Easy','Medium','Difficult'))) %>%
    mutate(colour = case_when(
        grade == 'Easy' ~ 'green',
        grade == 'Medium' ~ 'blue',
        grade == 'Difficult' ~ 'red'
    )) %>%
    mutate(popup = makePopup(name,length,lat,lng))

trails %>% 
    leaflet() %>%
    addTiles() %>%
    addCircleMarkers(
        color = trails$colour, 
        popup = trails$popup
        ) %>%
    addLegend(labels = levels(trails$grade), colors = c("green", "blue", "red"))