传单R,如何使与儿童统计相关的群集图标出现?

yos*_*bai 3 javascript r leaflet

我想根据子标记的属性总和自定义 Leaflet/Shiny 应用程序中群集标记的外观。

它类似于这个问题,它根据孩子的数量制作集群的图标颜色。如果我想根据地震的震级总和自定义图标怎么办?

使用纯 javascript 应用程序,似乎我应该能够将自定义属性设置为单个标记,然后从 访问它iconCreateFunction,如本例中所做的那样。

但是我正在为 R添加带有addCircleMarkersaddMarkers来自传单的标记,并且似乎我无法向正在生成的标记添加任意属性。下面的代码有效,但如果我取消注释两行(mag = ~magsum += markers[i].mag;),则无效

leaflet(quakes) %>% addTiles() %>% addMarkers(
  # mag = ~mag,
  clusterOptions = markerClusterOptions(
  iconCreateFunction=JS("function (cluster) {    
    var markers = cluster.getAllChildMarkers();
    var sum = 0; 
    for (i = 0; i < markers.length; i++) {
    //  sum += markers[i].mag;
      sum += 1;
    }
    return new L.DivIcon({ html: '<div><span>' + sum + '</span></div>'});

  }")

  )
)
Run Code Online (Sandbox Code Playgroud)

我想过使用label=选项addMarkers,然后从 Javascript 解析它。但是getAllChildMarkers()在 JS 中使用on 标记集群访问的标记似乎没有label属性。

我还想过将数据帧从 R 传递到传单(JS),不知何故,也许像这个例子,或者这个......?

yos*_*bai 5

找到了我的答案。好像我可以把任意属性里面options=addMarker

leaflet(quakes) %>% addTiles() %>% addMarkers(
  options = markerOptions(mag = ~mag),
  clusterOptions = markerClusterOptions(
  iconCreateFunction=JS("function (cluster) {    
    var markers = cluster.getAllChildMarkers();
    var sum = 0; 
    for (i = 0; i < markers.length; i++) {
      sum += Number(markers[i].options.mag);
//      sum += 1;
    }
    return new L.DivIcon({ html: '<div><span>' + sum + '</span></div>'});
  }")
  )
)
Run Code Online (Sandbox Code Playgroud)