如何使用 Shiny 将多个对象添加到传单地图
How to add multiple objects to a leaflet map using Shiny
AIM
使用 Shiny 创建传单地图,用圆形标记表示一组数据,并使用第二组数据为点添加标记。
问题
"circle" 标记有效,但 "markers" 无效。 "addMarkers" 代码未被读取或被忽略。
服务器
library(shiny)
library(leaflet)
server <- function(input, output, session) {
points <- read.csv(textConnection("Loc,STZip,Lat,Long,Vol
Loc1,17699,40.0185,-76.297582,15
Loc2,76177,32.949819,-97.31406,20
Loc3,27801,35.935125,-77.77076,17
Loc4,52404,41.947335,-91.68819,12
Loc5,19380,39.983108,-75.59332,18
"))
newpoints <- read.csv(textConnection("Loc,STZip,Lat,Long,Vol
Loc6,18640,41.317242,-75.77942,12
Loc7,38133,35.208709,-89.80518,20
"))
output$mymap <- renderLeaflet({
leaflet() %>%
addProviderTiles("Stamen.TonerLite",
options = providerTileOptions(noWrap = TRUE)) %>%
addCircleMarkers(lng = ~Long, lat = ~Lat, radius = ~Vol, layerId = NULL,
group = "NGS_Facilities", stroke = TRUE, color = "#0000CC", weight = 5, opacity = 0.5,
fill = TRUE, fillColor = "#0000CC", fillOpacity = 0.2, dashArray = NULL,
popup = ~Loc, options = pathOptions(), clusterOptions = NULL, clusterId = NULL,
data = (newpoints)) %>%
#this code is not being read or is ignored...
addMarkers(lng = ~Long, lat = ~Lat, popup = ~Loc, data = (newpoints))
})
}
UI
图书馆(闪亮)
图书馆(传单)
r_colors <- rgb(t(col2rgb(colors()) / 255))
names(r_colors) <- colors()
ui <- fluidPage(
title = "Map of Stuff",
leafletOutput("mymap", width = 1800, height = 800),
p()
)
这是一个奇怪的错误...与它斗争了一段时间,直到我意识到这是您读取数据的方式的问题。
> newpoints
Loc STZip Lat Long Vol
1 Loc6 18640 41.31724 -75.77942 12
2 Loc7 38133 35.20871 -89.80518 20
3 NA NA NA NA
因为你的结束引号在一个新行上,它留下了一个中断。这会导致数据中的最后一行为 NA
s。我在debug的时候好像在数据之前放什么都能显示,之后就显示不出来了。
要解决此问题,请将您的数据读取为:
points <- read.csv(textConnection("Loc,STZip,Lat,Long,Vol
Loc1,17699,40.0185,-76.297582,15
Loc2,76177,32.949819,-97.31406,20
Loc3,27801,35.935125,-77.77076,17
Loc4,52404,41.947335,-91.68819,12
Loc5,19380,39.983108,-75.59332,18"))
newpoints <- read.csv(textConnection("Loc,STZip,Lat,Long,Vol
Loc6,18640,40.0185,-76.297582,12
Loc7,38133,35.208709,-89.80518,20"))
无论出于何种原因,如果最后一行都是 NA
s
,Leaflet 就会出错
AIM
使用 Shiny 创建传单地图,用圆形标记表示一组数据,并使用第二组数据为点添加标记。
问题 "circle" 标记有效,但 "markers" 无效。 "addMarkers" 代码未被读取或被忽略。
服务器
library(shiny)
library(leaflet)
server <- function(input, output, session) {
points <- read.csv(textConnection("Loc,STZip,Lat,Long,Vol
Loc1,17699,40.0185,-76.297582,15
Loc2,76177,32.949819,-97.31406,20
Loc3,27801,35.935125,-77.77076,17
Loc4,52404,41.947335,-91.68819,12
Loc5,19380,39.983108,-75.59332,18
"))
newpoints <- read.csv(textConnection("Loc,STZip,Lat,Long,Vol
Loc6,18640,41.317242,-75.77942,12
Loc7,38133,35.208709,-89.80518,20
"))
output$mymap <- renderLeaflet({
leaflet() %>%
addProviderTiles("Stamen.TonerLite",
options = providerTileOptions(noWrap = TRUE)) %>%
addCircleMarkers(lng = ~Long, lat = ~Lat, radius = ~Vol, layerId = NULL,
group = "NGS_Facilities", stroke = TRUE, color = "#0000CC", weight = 5, opacity = 0.5,
fill = TRUE, fillColor = "#0000CC", fillOpacity = 0.2, dashArray = NULL,
popup = ~Loc, options = pathOptions(), clusterOptions = NULL, clusterId = NULL,
data = (newpoints)) %>%
#this code is not being read or is ignored...
addMarkers(lng = ~Long, lat = ~Lat, popup = ~Loc, data = (newpoints))
})
}
UI
图书馆(闪亮) 图书馆(传单)
r_colors <- rgb(t(col2rgb(colors()) / 255))
names(r_colors) <- colors()
ui <- fluidPage(
title = "Map of Stuff",
leafletOutput("mymap", width = 1800, height = 800),
p()
)
这是一个奇怪的错误...与它斗争了一段时间,直到我意识到这是您读取数据的方式的问题。
> newpoints
Loc STZip Lat Long Vol
1 Loc6 18640 41.31724 -75.77942 12
2 Loc7 38133 35.20871 -89.80518 20
3 NA NA NA NA
因为你的结束引号在一个新行上,它留下了一个中断。这会导致数据中的最后一行为 NA
s。我在debug的时候好像在数据之前放什么都能显示,之后就显示不出来了。
要解决此问题,请将您的数据读取为:
points <- read.csv(textConnection("Loc,STZip,Lat,Long,Vol
Loc1,17699,40.0185,-76.297582,15
Loc2,76177,32.949819,-97.31406,20
Loc3,27801,35.935125,-77.77076,17
Loc4,52404,41.947335,-91.68819,12
Loc5,19380,39.983108,-75.59332,18"))
newpoints <- read.csv(textConnection("Loc,STZip,Lat,Long,Vol
Loc6,18640,40.0185,-76.297582,12
Loc7,38133,35.208709,-89.80518,20"))
无论出于何种原因,如果最后一行都是 NA
s