yos*_*bai 3 javascript r leaflet
我想根据子标记的属性总和自定义 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>'});
}")
)
)
Run Code Online (Sandbox Code Playgroud)
我想过使用label=
选项addMarkers
,然后从 Javascript 解析它。但是getAllChildMarkers()
在 JS 中使用on 标记集群访问的标记似乎没有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>'});
}")
)
)
Run Code Online (Sandbox Code Playgroud)