R 传单-放大和缩小时地图上的点移动
我使用R 传单-放大和缩小时地图上的点移动,r,google-maps,leaflet,zooming,R,Google Maps,Leaflet,Zooming,我使用spool包创建了一个地图小部件,然后使用函数addMarkers()添加了两个层。然而,我发现地图上的点在放大和缩小时会改变它们的位置。相关脚本如下所示: 首先,在传单 pchIcons <- function(pch = 0:14, width = 30, height = 30, col = 1:15, ...) { pchLength <- length(pch) pchFiles <- character(pchLength) # create a
spool
包创建了一个地图小部件,然后使用函数addMarkers()
添加了两个层。然而,我发现地图上的点在放大和缩小时会改变它们的位置。相关脚本如下所示:
首先,在传单
pchIcons <- function(pch = 0:14, width = 30, height = 30, col = 1:15, ...) {
pchLength <- length(pch)
pchFiles <- character(pchLength)
# create a sequence of png images
for (i in seq_len(pchLength)) {
pchTempFile <- tempfile(fileext = '.png')
png(pchTempFile, width = width, height = height, bg = 'transparent')
par(mar = c(0, 0, 0, 0))
plot.new()
points(.5, .5, pch = pch[i], cex = 1.5, col = col[i], ...)
dev.off()
pchFiles[i] = pchTempFile
}
pchFiles
}
最后,我们可以发现当放大或缩小时,地图上的点会移动(如屏幕截图所示)。
有人知道问题出在哪里吗?我该如何解决?欢迎任何意见 缩放时,地图将动态更改。我相信这些点在同一个地点,道路细节只是在变化。不确定,我们可以以谷歌地图为例:当我们放大/缩小时,地点的位置不会改变。不知道
R
的语法,但您可能需要正确指定。看见
baseLayer <- leaflet(zero) %>%
addProviderTiles("Stamen.Toner") %>%
setView(posParis[["lng"]], posParis[["lat"]], zoom = 12)
addZeroLayer <- baseLayer %>%
addMarkers(popup = paste(paste(zero$Code, zero$Ecart),
zero$Address,
sep = "<br/>"),
lng = as.numeric(zero$Long),
lat = as.numeric(zero$Lat),
icon = ~ icons(
iconUrl = pchIcons(rep(magasinEcart[1], nrow(zero)),
40,
40,
col = colorZero,
lwd = 2)
),
group = '0')
addOneLayer <- addZeroLayer %>%
addMarkers(popup = paste(paste(one$Code, one$Ecart),
one$Address,
sep = "<br/>"),
lng = as.numeric(one$Long),
lat = as.numeric(one$Lat),
icon = ~ icons(
iconUrl = pchIcons(rep(magasinEcart[2], nrow(one)),
40,
40,
col = colorOne,
lwd = 2)
),
group = '1')
mapTourist <- addOneLayer %>%
addLayersControl(overlayGroups = c('0', '1'),
options = layersControlOptions(collapsed = FALSE)) %>%
addLegend("bottomright",
pal = colorFactor(brewer.pal(9, 'Set1')[3:4],
unique(magasinBaseComp$Ecart)),
values = names(magasinEcart),
title = "Ecart",
opacity = 1)