2016-11-23 5 views
2

リーフレットのRでは、addLayerControl()に基づいて凡例を非表示/トグルする方法は不思議です。オプションレイヤーaがトグルされると、GROUPを使用できるので、オプションレイヤーbのデータはaddPolygons()によって表示されません。RのリーフレットのaddLayerControl()に基づいて凡例を非表示/トグルする方法

enter image description here

:私はグループレイヤ(赤)を選択したときに私はグループ層B(青)の凡例を非表示にすることはできませんよのでしかし、addLegend()のオプションは、GROUPの機能を持っていません出典:https://gis.stackexchange.com/questions/214773/how-to-hide-toggle-legends-with-layer-controls-in-leaflet-for-r

どうすればよいですか?

よろしく、

ヨリス

答えて

1

は、このコードは、私の仕事:

observeEvent(input$mymap_groups,{ 
    mymap <- leafletProxy("mymap", data = SalesMap) 
    mymap %>% clearControls() 
    if (input$mymap_groups == '1') { 
     mymap %>% addLegend(position="bottomright", pal=pal1, values=SalesMap$SALES, title="a") 
    } 
    else if (input$mymap_groups == '2') { 
     mymap %>% addLegend(position="bottomright", pal=pal2, values=SalesMap$Bonnen, title="b") 
    } 
    }) 

あなたがすることができます)(observeEventをselected.Inされるグループの種類を識別するために、入力の$ mymap_groupsを使用することができますif/elseステートメントを使用して、グループに基づいて凡例を作成します。

1

誰かがこれを将来見ている場合は、新しい実行可能な方法があります。

あなたが開発を使用している場合は、/ leafletパッケージのGithubのバージョンは、addLegend()は今grouplayerId引数をサポートしています。

(インストールするコマンドを実行してdevtools::install_github('rstudio/leaflet')

でも最新CRANのバージョン(1.1.0)layerIDをサポートしています。

あなたは開発バージョンで行くと仮定すると、次のコードは動作するはずです:

leaflet() %>% 
    #Polygon Layers 
    addPolygons(data = exampleDataOne, group = "Group A") %>% 
    addPolygons(data = exampleDataTwo, group = "Group B") %>% 

    #Legend Layers 
    addLegend(values = exampleValuesOne, group = "Group A", 
       position = "bottomright") %>% 
    addLegend(values = exampleValuesTwo, group = "Group B", 
       position = "bottomright") %>% 

    #Layers Control 
    addLayersControl(overlayGroups = c("Group A","Group B"), 
       options = layersControlOptions(collapsed = FALSE)) 

これは、対応する層がアクティブなときのみ、凡例を表示する所望の効果を持っている必要があります。

1つの潜在的な問題は、デフォルトですべてleaflet層がアクティブであることです。ポリゴンが重なっていると、視覚的に魅力的でないマップになることがあります。また、複数の伝説がある場合は、これも問題になります。

あなたができることは、hideGroup()機能を使用することです。

あなたは開始時にのみGroup Aアクティブ上記の例からを持っていると思った場合は、上記のコードブロックの末尾に

%>% hideGroup("Group B")

を追加することができます。

+0

良い解決策ですが、addLayersControlの 'overlayGroups'オプションではうまくいかないようです。 – Bastien

関連する問題