r - Shiny 传单 map 上的自定义标记

标签 r dictionary icons leaflet customization

我需要根据它们的类型在 Shiny 的传单 map 点上进行映射 - 总共四种类型,具有不同颜色的相同标记。

我查了一下:

https://rstudio.github.io/leaflet/markers.html

这看起来像我的回复,但我无法修复它:( Change color of leaflet marker

此代码已在答案中共享

library(dplyr)
library(leaflet)

mutate(quakes, group = cut(mag, breaks = c(0, 5, 6, Inf), labels = c("blue", 
"green", "orange"))) -> mydf

### I edit this png file and created my own marker.
### https://raw.githubusercontent.com/lvoogdt/Leaflet.awesome-
markers/master/dist/images/markers-soft.png
quakeIcons <- iconList(blue = makeIcon("/Users/jazzurro/Documents/Stack 
Overflow/blue.png", iconWidth = 24, iconHeight =32),
                   green = makeIcon("/Users/jazzurro/Documents/Stack 
Overflow/green.png", iconWidth = 24, iconHeight =32),
                   orange = makeIcon("/Users/jazzurro/Documents/Stack 
Overflow/orange.png", iconWidth = 24, iconHeight =32))


leaflet(data = mydf[1:100,]) %>% 
addTiles() %>%
addMarkers(icon = ~quakeIcons[group])

我基本上有相同的代码

# Create our own custom icons
teamIcons <- iconList(
A = makeIcon("C:/Map/Asset 20.png", iconWidth = 18, iconHeight = 18),
B = makeIcon("C:/Map/Asset 21.png", iconWidth = 18, iconHeight = 18),
C = makeIcon("C:/Map/Asset 22.png", iconWidth = 18, iconHeight = 18),
D = makeIcon("C:/Map/Asset 23.png", iconWidth = 18, iconHeight = 18))

data1 <- data %>% mutate(type = Factor(data$type), c("A", "B", "C", "D"))

那我就这么做

m <- leaflet(data=data) %>%
addProviderTiles(providers$Stamen.TonerLite) %>%
addMarkers(~data1$long, ~data1$lat, icon = ~teamIcons[data1$type], popup 
state_popup) 

addMarkers 的数据取自另一个数据集 - data1,而不是 data。当我使用很棒的图标时,它不会产生问题。当我使用目录中自己的图标时,我在 map 上有一个普通的蓝色标记。

下标类型“逻辑”无效

最佳答案

个人解决。

library(leaflet)
library(dplyr) 

每个图标都是用数字亲自定制的,并放入工作目录中。

然后使用 icon_list()

# Create our own custom icons
icon_list <- iconList(
project1 = makeIcon("C:/Map/1.png", iconWidth = 24, iconHeight = 30),
project2 = makeIcon("C:/Map/2.png", iconWidth = 24, iconHeight = 30)

等等,只要你有

project1、project2 等当然与数据集列中的相同名称匹配,并且在数据集中每个项目应该具有长和纬度。

然后

data2 <- data %>% mutate(type = factor(data$project_id), c("project1", 
"project2") 

在服务器中,简单的代码将是这样的

m <-  leaflet(data=data) %>% 
  addProviderTiles(providers$Stamen.TonerLite) %>%
  addMarkers(~data2$long, ~data2$lat, icon=~icon_list[data2$project_id], 
  popup = state_popup)

感谢this question

关于r - Shiny 传单 map 上的自定义标记,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46286599/

相关文章:

r - sf::st_intersection:几乎随机的错误操作

r - 如何使用 ggplot 制作一帧中物种丰富度和多样性的条形图

c++ - 字符串和整数的映射

android - 从操作栏 xamarin 中删除图标

java - 小程序不想在浏览器中打开

r - 我正在尝试安装 package manipulate : message = not available for r 3. 1.1

python - 为什么要为自己设置一个字典浅拷贝?

arrays - 如何谓词数组字典来查找匹配值

matlab - Simulink 中这个图标的含义是什么?

R:ggplot:绘图显示垂直线而不是时间进程