传单easyButtonState不会更改,从而在呈现新标记时会禁用/启用MarkerClusters

问题描述

我在传单地图上添加一个切换按钮,可以在其中启用/禁用群集标记。始终在启用群集的情况下渲染地图标记。但是,假设用户单击该按钮以禁用群集。然后选择新参数;地图标记通过leafletProxy更新,请参见下文。但是切换状态保持禁用状态(没有群集),并且新数据通过“群集”呈现。

如何更改切换按钮的状态,以便在渲染新标记时,切换也将返回到已启用(带有群集)的状态?

output$map1 <- renderLeaflet({
      leaflet() %>% addTiles() %>%
        addEasyButton(easyButton(
          states = list(
            easyButtonState( 
              stateName="decluster-markers",icon =  "ion-toggle",title="disable Clustering",onClick = JS("
          function(btn,map) {
            var clusterManager =
              map.layerManager.getLayer('cluster','crashCluster');
            clusterManager.disableClustering();
            btn.state('cluster-markers');
            Shiny.onInputChange('my_easy_button','no cluster');
          }")
            ),easyButtonState(
              stateName="cluster-markers",icon="ion-toggle-filled",title="Enable Clustering",'crashCluster');
            clusterManager.enableClustering();
            btn.state('decluster-markers');
            Shiny.onInputChange('my_easy_button','cluster');
          }")
            )
          )
        ))
    observeEvent(filtered_crashes(),{
      leafletProxy("map1") %>%
        clearMarkers() %>% clearMarkerClusters() %>% 
        addAwesomeMarkers(
          clusterOptions = markerClusterOptions(maxClusterRadius = 30),clusterId = "crashCluster",group = "Crashes",lng = filtered_crash_lat_long()$lng,lat = filtered_crash_lat_long()$lat
        )
    })

我已经尝试过了,但是我不认为我应该使用observeEvent,因为它只能看到按钮是否在触发时被触发

  observeEvent(input$my_easy_button,{
    if (input$my_easy_button == 'no cluster'){
      shinyjs::enable("my_easy_button",shinyjs::toggle("no cluster"))
    }
  })

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...