# nocov start
.onLoad <- function (libname, pkgname) { # nolint
op <- options ()
## https://wiki.openstreetmap.org/wiki/Overpass_API#Public_Overpass_API_instances # nolint
## see https://github.com/ropensci/osmdata/pull/149
## Added and edited code here by JimShady to use random API each time.
available_apis <- c (
"https://overpass-api.de/api/interpreter",
"https://overpass.kumi.systems/api/interpreter"
)
op.osmdata <- list ( # nolint
osmdata.base_url = # nolint
sample (available_apis, 1)
)
## End of code edited by JimShady
toset <- !(names (op.osmdata) %in% names (op))
if (any (toset)) {
options (op.osmdata [toset])
}
invisible ()
}
# nocov end
.onAttach <- function (libname, pkgname) { # nolint
msg <- paste0 (
"Data (c) OpenStreetMap contributors,",
" ODbL 1.0. https://www.openstreetmap.org/copyright"
)
packageStartupMessage (msg)
}
#' get_overpass_url
#'
#' Return the URL of the specified overpass API. Default is
#' <https://overpass-api.de/api/interpreter/>.
#'
#' @return The overpass API URL
#'
#' @seealso [set_overpass_url()]
#'
#' @family overpass
#' @export
get_overpass_url <- function () {
op <- options ()
if (!"osmdata.base_url" %in% names (op)) {
stop ("overpass can not be retrieved")
} # nocov
options ()$osmdata.base_url
}
# nocov start
#' set_overpass_url
#'
#' Set the URL of the specified overpass API. Possible APIs with global coverage
#' are:
#' \itemize{
#' \item "https://overpass-api.de/api/interpreter" (default)
#' \item "https://overpass.kumi.systems/api/interpreter"
#' \item "https://overpass.osm.rambler.ru/cgi/interpreter"
#' \item "https://api.openstreetmap.fr/oapi/interpreter"
#' \item "https://overpass.osm.vi-di.fr/api/interpreter"
#' }
#' Additional APIs with limited local coverage include:
#' \itemize{
#' \item "https://overpass.osm.ch/api/interpreter" (Switzerland)
#' \item "https://overpass.openstreetmap.ie/api/interpreter" (Ireland)
#' }
#'
#' For further details, see
#' <https://wiki.openstreetmap.org/wiki/Overpass_API>
#'
#' @param overpass_url The desired overpass API URL
#'
#' @return The overpass API URL
#'
#' @seealso [get_overpass_url()]
#'
#' @family overpass
#' @export
set_overpass_url <- function (overpass_url) {
# check URL first
if (!grepl ("interpreter", overpass_url)) {
stop ("overpass_url not valid - must end with /interpreter")
}
old_url <- get_overpass_url ()
op <- options () # nolint
op.osmdata <- list (osmdata.base_url = overpass_url) # nolint
options (op.osmdata)
st <- overpass_status (quiet = TRUE)
if (!"available" %in% names (st)) {
set_overpass_url (old_url)
stop ("overpass_url not valid")
}
invisible ()
}
# nocov end
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.