带有传单的 R 闪亮:markerClusterGroup 未定义
R Shiny with leaflet: markerClusterGroup is undefined
我开始在 R 的 Shiny 中使用传单,我正在使用 RStudio。我想创建一个 map with markers for origins and destinations which could change through user input. Since i have a lot of markers to manage, i wanted to use the clustering plugin 所以我创建了一个闪亮的服务器:
server <- function(input, output, session) {
reactiveData <- reactiveValues(
origs = df.origins.total,
dests = df.destinations.total
)
mydata <- reactive({
mydf = data.frame(orig_lat=df.origins.total$lat,
orig_lon=df.origins.total$lon,
dest_lat=df.destinations.total$lat,
dest_lon=df.destinations.total$lon)
print(str(mydf))
return(mydf)
})
observe({
leafletProxy("map",data=mydata()) %>%
clearGroup("Destinations") %>%
addMarkers(
lng=~dest_lon,
lat=~dest_lat,
icon = uix.destMarker,
group = "Destinations",
clusterOptions = markerClusterOptions(
))
})
observe({
leafletProxy("map",data=mydata()) %>%
clearGroup("Origins") %>%
addMarkers(
lng=~orig_lon,
lat=~orig_lat,
icon = uix.origMarker,
group = "Origins",
clusterOptions = markerClusterOptions(
))
})
observe({
leafletProxy("map",data=mydata()) %>%
addLayersControl(overlayGroups = c("Origins","Destinations"))
})
output$map <- renderLeaflet({
leaflet() %>%
addTiles()%>%
})
}
奇怪的是,这段代码有时有效,有时无效,这意味着:它要么向我显示起点和目的地,要么只向我显示目的地。当只显示目的地时,我正在使用 Firefox 的检查器,它告诉我:
TypeError: _leaflet2.default.markerClusterGroup is undefined
leaflet.js:1273:7
这导致线
clusterGroup = _leaflet2.default.markerClusterGroup.layerSupport(clusterOptions);
我想我已经正确安装了这些软件包,因为它们有时会工作。即使发生错误,聚类仍然适用于显示的标记。
我的数据集每个都有大约 2400 个标记。此外,将所有观察者调用合并到一个观察者中并没有改变行为。我的数据集很大吗?我必须使用不同的顺序吗?我真的不知道,任何帮助将不胜感激!
问题is/was iconCreatFunction 没有得到leafletProxy 很好的支持。就我而言,不幸的是,我不得不为我的集群摆脱 leafletProxy,而只使用 leaflet,这是一个很大的性能问题。
另一种解决方案是从 plugin 自定义相应的文件:MarkerCluster.css、MarkerCluster.Default.css、leaflet.markercluster.js(我没有这样做,因为我做不到了解如何区分必须单独聚类的两种类型的标记)。
对我有帮助的相关问题,希望对遇到同样问题的其他开发者有所帮助:
iconCreateFunction does NOT work when adding Markers with leafletProxy
我开始在 R 的 Shiny 中使用传单,我正在使用 RStudio。我想创建一个 map with markers for origins and destinations which could change through user input. Since i have a lot of markers to manage, i wanted to use the clustering plugin 所以我创建了一个闪亮的服务器:
server <- function(input, output, session) {
reactiveData <- reactiveValues(
origs = df.origins.total,
dests = df.destinations.total
)
mydata <- reactive({
mydf = data.frame(orig_lat=df.origins.total$lat,
orig_lon=df.origins.total$lon,
dest_lat=df.destinations.total$lat,
dest_lon=df.destinations.total$lon)
print(str(mydf))
return(mydf)
})
observe({
leafletProxy("map",data=mydata()) %>%
clearGroup("Destinations") %>%
addMarkers(
lng=~dest_lon,
lat=~dest_lat,
icon = uix.destMarker,
group = "Destinations",
clusterOptions = markerClusterOptions(
))
})
observe({
leafletProxy("map",data=mydata()) %>%
clearGroup("Origins") %>%
addMarkers(
lng=~orig_lon,
lat=~orig_lat,
icon = uix.origMarker,
group = "Origins",
clusterOptions = markerClusterOptions(
))
})
observe({
leafletProxy("map",data=mydata()) %>%
addLayersControl(overlayGroups = c("Origins","Destinations"))
})
output$map <- renderLeaflet({
leaflet() %>%
addTiles()%>%
})
}
奇怪的是,这段代码有时有效,有时无效,这意味着:它要么向我显示起点和目的地,要么只向我显示目的地。当只显示目的地时,我正在使用 Firefox 的检查器,它告诉我:
TypeError: _leaflet2.default.markerClusterGroup is undefined
leaflet.js:1273:7
这导致线
clusterGroup = _leaflet2.default.markerClusterGroup.layerSupport(clusterOptions);
我想我已经正确安装了这些软件包,因为它们有时会工作。即使发生错误,聚类仍然适用于显示的标记。 我的数据集每个都有大约 2400 个标记。此外,将所有观察者调用合并到一个观察者中并没有改变行为。我的数据集很大吗?我必须使用不同的顺序吗?我真的不知道,任何帮助将不胜感激!
问题is/was iconCreatFunction 没有得到leafletProxy 很好的支持。就我而言,不幸的是,我不得不为我的集群摆脱 leafletProxy,而只使用 leaflet,这是一个很大的性能问题。
另一种解决方案是从 plugin 自定义相应的文件:MarkerCluster.css、MarkerCluster.Default.css、leaflet.markercluster.js(我没有这样做,因为我做不到了解如何区分必须单独聚类的两种类型的标记)。
对我有帮助的相关问题,希望对遇到同样问题的其他开发者有所帮助:
iconCreateFunction does NOT work when adding Markers with leafletProxy