javascript - 传单R,如何使与儿童统计相关的聚集图标出现?
问题描述
我想根据子标记属性的总和自定义 Leaflet/Shiny 应用程序中聚集标记的外观。
它类似于这个问题,它根据孩子的数量制作集群的图标颜色。如果我想根据地震震级的总和自定义图标怎么办?
使用纯 javascript 应用程序,似乎我应该能够将自定义属性设置为单个标记,然后从 访问它,如本示例iconCreateFunction
中所做的那样。
但是我正在为 R 添加带有addCircleMarkers
和addMarkers
来自传单的标记,并且似乎我不能为正在生成的标记添加任意属性。下面的代码有效,但如果我取消注释两行(mag = ~mag
和sum += 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>'});
}")
)
)
我考虑过使用label=
选项addMarkers
,然后从 Javascript 中解析它。但是getAllChildMarkers()
在 JS 中使用标记簇访问的标记似乎没有label
属性。
解决方案
找到了我的答案。似乎我可以将任意属性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>'});
}")
)
)
推荐阅读
- jquery - 使用 Django 通道 websocket 在 Bokeh 绘图客户端更新数据
- speech-recognition - 如何在 Google 控制台上的操作中启用语音输入?
- python - 多个套接字连接而无需每次都重新打开一个新套接字
- go - 来自go源的这段代码是什么意思?喜欢 (*(*float32)(v.ptr))
- ruby-on-rails - 带有 content_for javascript 头的 simple_form 自定义输入?
- html - 可滚动侧边栏中的 Flexbox 粘性页脚
- android - 单击时更新按钮的不透明度?扑
- android - 如何在 NativeScript 中从 Android 内容 URI 打开文件?
- javascript - 使用 XMLHttpRequest 从函数调用时,函数按预期工作,但使用 EventSource 从函数调用时失败。为什么是这样?
- node.js - Populate() Mongoose 不返回连接数据