如何在Leaflet中根据数据自定义图标形状、颜色及标记颜色?
问题描述
我希望在地图上绘制数据,使icon形状、iconColor和markerColor均基于数据本身。
示例代码
library(data.table) library(leaflet) library(webshot2) library(htmlwidgets) library(fontawesome) len <- 20 dat <- data.table( lat = runif(len, min = -90, max = 90), lon = runif(len, min = -180, max = 180), activity = sample(x = c('person-hiking', 'house', 'map-marker', 'user-gear'), size = len, replace = T), marker_color = sample(x = c('blue', 'cadetblue', 'lightgray'), size = len, replace = T), icon_color = sample(x = c('white', 'black'), size = len, replace = T) ) icons_1 <- awesomeIcons( icon = dat$activity, markerColor = dat$marker_color, iconColor = dat$icon_color, library = 'fa' ) icons_2 <- awesomeIcons( icon = 'map_marker', markerColor = dat$marker_color, iconColor = 'black', library = 'fa' ) icons_3 <- makeAwesomeIcon(text = fa('user-gear')) plt <- leaflet(data = dat, options = leafletOptions(zoomControl = FALSE)) %>% addTiles() %>% addAwesomeMarkers(~lon, ~lat, icon = icons_1) %>% # addAwesomeMarkers(~lon, ~lat, icon = icons_2) %>% # addAwesomeMarkers(~lon, ~lat, icon = icons_3) %>% addScaleBar(position = 'bottomright', options = scaleBarOptions(maxWidth = 200, metric = T, imperial = T)) %>% addProviderTiles(provider = providers$CartoDB.DarkMatterNoLabels)
输出结果
icons_1能正确显示markerColor,但仅当icon_color设为black且图标为map-marker时,icon_color才显示正常。(显示效果:多数图标颜色未按设定值生效,仅map-marker图标以黑色正常显示)- 为排查是否与
icon参数有关,尝试使用icons_2(固定图标为map_marker、图标色为black),但问题仍未解决。(显示效果:标记颜色正常,但图标颜色依旧不符合预期) - 通过
data.table中activity指定的单个图标可正常工作,用icons_3测试user-gear图标时,显示正常。(显示效果:单个user-gear图标能正确渲染)
我能创建单个自定义图标并应用于所有标记,但不知道如何实现批量自定义,让每个标记的图标形状、图标颜色和标记颜色都根据数据动态设置。
内容的提问来源于stack exchange,提问作者Gautam
相关产品推荐
相关产品推荐

