【发布时间】:2019-03-06 07:18:20
【问题描述】:
每天我都需要在地图上绘制一条路径并添加一个文本,例如 4、5 或 8 分钟。表示从起点到目的地的车程(见下图)。我认为在 R 中使用 Leaflet 创建一个闪亮的应用程序会很有帮助(代码如下所示)。
我使用 leaflet.extras 包中的 addDrawToolbar 来绘制路径,如所附地图所示。但我不知道也找不到如何以与绘制路径相同的方式添加文本。解决方案不一定必须在 R 中。我的目标是为那些想做这些事情但同时不知道如何编码的人创建一个应用程序。
library(shiny)
library(leaflet)
library(leaflet.extras)
ui = fluidPage(
tags$style(type = "text/css", "#map {height: calc(100vh - 20px)
!important;}"),
leafletOutput("map")
)
server = function(input,output,session){
output$map = renderLeaflet(
leaflet()%>%
addTiles(urlTemplate = "http://mt0.google.com/vt/lyrs=m&hl=en&x=
{x}&y={y}&z={z}&s=Ga")%>%
addMeasure(
primaryLengthUnit = "kilometers",
secondaryAreaUnit = FALSE
)%>%
addDrawToolbar(
targetGroup='draw',
editOptions = editToolbarOptions(selectedPathOptions =
selectedPathOptions()),
polylineOptions = filterNULL(list(shapeOptions =
drawShapeOptions(lineJoin = "round", weight = 8))),
circleOptions = filterNULL(list(shapeOptions =
drawShapeOptions(),
repeatMode = F,
showRadius = T,
metric = T,
feet = F,
nautic = F))) %>%
setView(lat = 45, lng = 9, zoom = 3) %>%
addStyleEditor(position = "bottomleft",
openOnLeafletDraw = TRUE)
)
}
shinyApp(ui,server)
【问题讨论】:
-
您是否考虑过使用弹出窗口:rstudio.github.io/leaflet/popups.html?您可以使用 HTML 设置文本样式并使用纬度/经度指定位置,...
-
我已经考虑了您的建议。非常感谢,但正如问题中所解释的,此应用程序将由非编码人员使用,并且使用弹出窗口将文本放置在传单地图上需要事先对其进行编码。
-
你能创建一个用户输入的文本框并使用它来填充弹出窗口吗?
-
您还需要纬度和经度数据才能使用弹出窗口或 addLabelOnlyMarkers(这是另一个选项),而不仅仅是文本。我的意思是为那些想以最少的努力做到这一点的人,为那些不想关心纬度和经度值的人实现这样的应用程序。