我开始使用R's Shiny中的传单,我正在使用RStudio。我想为原点和目的地创建一个map with markers,可以通过用户输入进行更改。由于我有很多要管理的标记,我想使用clustering plugin所以我创建了一个Shiny服务器:
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个标记。将所有观察者调用组合成一个单独的观察者也没有改变行为。我的数据集是否很大?我必须使用不同的订单吗?我真的没有任何想法,任何帮助将不胜感激!
答案 0 :(得分:0)
问题是leafletProxy不能很好地支持iconCreatFunction。在我的情况下,我不幸的是必须摆脱我的集群的leafletProxy,而只使用传单,这是一个很大的性能问题。
另一种解决方案可能是自定义plugin中的相应文件:MarkerCluster.css,MarkerCluster.Default.css,leaflet.markercluster.js(我没有这样做,因为我找不到如何区分必须分别聚类的两种类型的标记。
帮助我的相关问题,我希望它能帮助其他开发人员解决同样的问题:
Does markercluster work together with leafletProxy() and option iconCreateFunction?
iconCreateFunction does NOT work when adding Markers with leafletProxy