R 在传单生成的地图图例中插入图标
我用带有两个数据库(df和df1)的传单创建了一张地图。我设法插入了数据库df的图例,它是指我生成的集群的点。但是,我想在同一个图例中插入数据库图标df1。我插入了一个附加的图像来说明。在同一图例中,它显示集群以及df1数据库的图标。此图标的说明我指定为“接触点”。可执行代码如下所示R 在传单生成的地图图例中插入图标,r,leaflet,legend,R,Leaflet,Legend,我用带有两个数据库(df和df1)的传单创建了一张地图。我设法插入了数据库df的图例,它是指我生成的集群的点。但是,我想在同一个图例中插入数据库图标df1。我插入了一个附加的图像来说明。在同一图例中,它显示集群以及df1数据库的图标。此图标的说明我指定为“接触点”。可执行代码如下所示 library(leaflet) library(geosphere) library(leafsync) library(mapview) #database df<-structure(list(Pro
library(leaflet)
library(geosphere)
library(leafsync)
library(mapview)
#database
df<-structure(list(Properties = c(1,2,3,4,5,6,7,8,9,10), Latitude = c(-23.2, -23.6, -23.9, -23.9, -23.6, -23.5, -23.9, -23.9, -23.6, -23.9),
Longitude = c(-49.6, -49.6, -49.6, -49.4, -49.3, -49.9, -49.3, -49.2, -49.6, -49.9)), class="data.frame",row.names = c(NA, -10L))
df1<-structure(list(Properties = c(1,2,3,4,5), Latitude = c(-23.8, -23.4, -23.2, -23.7,-23.8),
Longitude = c(-49.9, -49.2, -49.3, -49.1,-49.9)), class="data.frame",row.names = c(NA, -5L))
#clusters
d<-as.dist(distm(df[,2:1]))
fit.average<-hclust(d,method="average")
clusters<-cutree(fit.average, 3)
df$cluster<-clusters
#Map using leaflet
example=df
getColor <- function(example) {
sapply(example$cluster, function(cluster) {
if(cluster == 1) {
"blue"
} else if(cluster == 2) {
"green"
} else if(cluster == 3) {
"orange"
} else {
"red"
} })
}
icons <- awesomeIcons(
icon = 'ios-close',
iconColor = 'black',
library = 'ion',
markerColor = getColor(example)
)
ai_colors <-c("red","gray","blue","orange","green","beige","darkgreen","lightgreen", "lightred", "darkblue","lightblue",
"purple","darkpurple","pink", "cadetblue","white","darkred", "lightgray","black")
clust_colors <- ai_colors[df$cluster]
icons <- awesomeIcons(
icon = 'ios-close',
iconColor = 'black',
library = 'ion',
markerColor = clust_colors)
m = leaflet(example) %>% addTiles() %>%
addAwesomeMarkers(lat=~Latitude, lng = ~Longitude, icon=icons, label=~as.character(cluster)) %>%
addAwesomeMarkers(leaflet(df1) %>% addTiles(), lat=~df1$Latitude, lng = ~df1$Longitude) %>%
addLegend( position = "topright", title="Cluster", colors = ai_colors[1:max(df$cluster)],labels =
unique(df$cluster))
m
图书馆(传单)
图书馆(地球圈)
库(leafsync)
图书馆(地图视图)
#数据库
df这里有一个非常讨厌的手动方式,但它可以完成工作:
library(leaflet)
library(geosphere)
library(leafsync)
library(mapview)
#database
df<-structure(list(Properties = c(1,2,3,4,5,6,7,8,9,10), Latitude = c(-23.2, -23.6, -23.9, -23.9, -23.6, -23.5, -23.9, -23.9, -23.6, -23.9),
Longitude = c(-49.6, -49.6, -49.6, -49.4, -49.3, -49.9, -49.3, -49.2, -49.6, -49.9)), class="data.frame",row.names = c(NA, -10L))
df1<-structure(list(Properties = c(1,2,3,4,5), Latitude = c(-23.8, -23.4, -23.2, -23.7,-23.8),
Longitude = c(-49.9, -49.2, -49.3, -49.1,-49.9)), class="data.frame",row.names = c(NA, -5L))
#clusters
d<-as.dist(distm(df[,2:1]))
fit.average<-hclust(d,method="average")
clusters<-cutree(fit.average, 3)
df$cluster<-clusters
#Map using leaflet
ai_colors <-c("red","gray","blue","orange","green","beige","darkgreen","lightgreen", "lightred", "darkblue","lightblue",
"purple","darkpurple","pink", "cadetblue","white","darkred", "lightgray","black")
clust_colors <- ai_colors[df$cluster]
icons <- awesomeIcons(
icon = 'ios-close',
iconColor = 'black',
library = 'ion',
markerColor = clust_colors)
# Choose Icon:
propertiesIcons <- icons(
iconUrl = ifelse(df1$Properties,
"http://icons.iconarchive.com/icons/icons-land/vista-map-markers/72/Map-Marker-Marker-Outside-Chartreuse-icon.png"
),
iconWidth = 45, iconHeight = 40,
iconAnchorX = 25, iconAnchorY = 12)
cluster1Icon <- icons(
"http://icons.iconarchive.com/icons/paomedia/small-n-flat/72/map-marker-icon.png",
iconWidth = 45, iconHeight = 40,
iconAnchorX = 25, iconAnchorY = 12)
cluster2Icon <- icons(
"http://icons.iconarchive.com/icons/icons-land/vista-map-markers/72/Map-Marker-Marker-Outside-Azure-icon.png",
iconWidth = 45, iconHeight = 40,
iconAnchorX = 25, iconAnchorY = 12)
cluster3Icon <- icons(
"http://icons.iconarchive.com/icons/icons-land/vista-map-markers/72/Map-Marker-Marker-Inside-Chartreuse-icon.png",
iconWidth = 45, iconHeight = 40,
iconAnchorX = 25, iconAnchorY = 12)
clusterIcons <- list(cluster1Icon, cluster2Icon, cluster3Icon)
html_legend <- c("<img src='http://icons.iconarchive.com/icons/icons-land/vista-map-markers/72/Map-Marker-Marker-Outside-Chartreuse-icon.png'>green",
"<img src='http://icons.iconarchive.com/icons/paomedia/small-n-flat/72/map-marker-icon.png'>red",
"<img src='http://icons.iconarchive.com/icons/icons-land/vista-map-markers/72/Map-Marker-Marker-Outside-Azure-icon.png'>blue",
"<img src='http://icons.iconarchive.com/icons/icons-land/vista-map-markers/72/Map-Marker-Marker-Inside-Chartreuse-icon.png'>grey"
)
# Produce Map:
m <-
leaflet(df1) %>%
addTiles() %>%
addMarkers(
~ Longitude,
~ Latitude,
label = ~ as.character(df1$Properties),
icon = propertiesIcons
) %>%
addControl(html = html_legend, position = "topright") %>%
addMarkers(
lat = ~ df$Latitude[which(df$cluster == "1")],
lng = ~ df$Longitude[which(df$cluster == "1")],
icon = clusterIcons[[1]],
label = ~ as.character(df$cluster[which(df$cluster == "1")])
) %>%
addMarkers(
lat = ~ df$Latitude[which(df$cluster == "2")],
lng = ~ df$Longitude[which(df$cluster == "2")],
icon = clusterIcons[[2]],
label = ~ as.character(df$cluster[which(df$cluster == "2")])
) %>%
addMarkers(
lat = ~ df$Latitude[which(df$cluster == "3")],
lng = ~ df$Longitude[which(df$cluster == "3")],
icon = clusterIcons[[3]],
label = ~ as.character(df$cluster[which(df$cluster == "3")])
)
m
图书馆(传单)
图书馆(地球圈)
库(leafsync)
图书馆(地图视图)
#数据库
df@Jose请看:完美。我会努力的,萨尔你好,朋友。如果我能做到,我会把它插入这里。@Jose不用担心,检查每个标记上的元素以获得标记url。谢谢朋友。我明白了,我只是想把这两个传说合并起来,你能帮我吗?我留下代码作为答案。@Jose如果我的解决方案符合您的要求,请接受它。请查看下面我编辑的解决方案,如果它符合您的要求,请投票并接受!谢谢你的回复。我真的很喜欢你做的那个,看起来不错,但实际上我只需要在集群的图例中插入一个图标。我所做的回答是做我想做的,只是没有把集群图例中的图标放在一起。我这样做是对的,只有图标的标题我无法插入到集群的标题中。