手动为 Leaflet 地图创建点
Manually creating points for Leaflet map
我正在创建几个要在 Leaflet-R 地图上绘制的点。
但是,当尝试使用 addCircles 绘制点时出现错误:
Warning: Error in derivePoints: Point data not found; please provide addCircles with data and/or lng/lat arguments
关于空间数据框的信息如下:
Simple feature collection with 3 features and 4 fields
geometry type: POINT
dimension: XY
bbox: xmin: -79.48837 ymin: 43.66537 xmax: -79.29187 ymax: 43.71345
epsg (SRID): 4326
proj4string: +proj=longlat +datum=WGS84 +no_defs
我有另一个可用的空间数据框,除了 +datum=WGS84 替换为 +ellps=WGS84 之外,所有信息都相同。可能是这样吗?如果是这样,我该如何进行更改?
示例代码
library(shiny)
library(leaflet)
ui <- fluidPage(
leafletOutput("mymap")
)
server <- function(input, output, session) {
# Create tree geometries
tree_1g <- st_point(c(-79.2918671415814, 43.6760766531298))
tree_2g <- st_point(c(-79.4883669334101, 43.6653747165064))
tree_3g <- st_point(c(-79.2964680812039, 43.7134458013647))
# Create sfc object with multiple sfg objects
points_sfc <- st_sfc(tree_1g, tree_2g, tree_3g, crs = 4326)
# Create tree attributes
data <- data.frame (
id = c(1, 2, 3),
address = c(10, 20, 30),
street = c("first", "second", "third"),
tname = c("oak", "elm", "birch")
)
tree_data <- st_sf(data, geometry = points_sfc)
output$mymap <- renderLeaflet({
leaflet() %>%
addProviderTiles(providers$Stamen.Watercolor) %>%
# Centre the map in the middle of Toronto
setView(lng = -79.384293,
lat = 43.685, #43.653908,
zoom = 11) %>%
addCircles(tree_data)
})
}
shinyApp(ui, server)
解决方案
您需要指定 data = tree_data
,因为在 addCircles()
调用中,data
参数是最后一个。
leaflet() %>%
addProviderTiles(providers$Stamen.Watercolor) %>%
setView(lng = -79.384293,
lat = 43.685,
zoom = 11) %>%
addCircles(data = tree_data)
说明
addCircles()
调用中的第一个参数是 map
,它通过 %>%
运算符传入。第二个参数是 lng
,所以你在调用中所做的相当于
addCircles(lng = tree_data)
备选
另一种将数据发送到 addCircles()
函数的方法是通过 leaflet()
调用
leaflet(tree_data) %>%
addProviderTiles(providers$Stamen.Watercolor) %>%
setView(lng = -79.384293,
lat = 43.685,
zoom = 11) %>%
addCircles()
我正在创建几个要在 Leaflet-R 地图上绘制的点。 但是,当尝试使用 addCircles 绘制点时出现错误:
Warning: Error in derivePoints: Point data not found; please provide addCircles with data and/or lng/lat arguments
关于空间数据框的信息如下:
Simple feature collection with 3 features and 4 fields
geometry type: POINT
dimension: XY
bbox: xmin: -79.48837 ymin: 43.66537 xmax: -79.29187 ymax: 43.71345
epsg (SRID): 4326
proj4string: +proj=longlat +datum=WGS84 +no_defs
我有另一个可用的空间数据框,除了 +datum=WGS84 替换为 +ellps=WGS84 之外,所有信息都相同。可能是这样吗?如果是这样,我该如何进行更改?
示例代码
library(shiny)
library(leaflet)
ui <- fluidPage(
leafletOutput("mymap")
)
server <- function(input, output, session) {
# Create tree geometries
tree_1g <- st_point(c(-79.2918671415814, 43.6760766531298))
tree_2g <- st_point(c(-79.4883669334101, 43.6653747165064))
tree_3g <- st_point(c(-79.2964680812039, 43.7134458013647))
# Create sfc object with multiple sfg objects
points_sfc <- st_sfc(tree_1g, tree_2g, tree_3g, crs = 4326)
# Create tree attributes
data <- data.frame (
id = c(1, 2, 3),
address = c(10, 20, 30),
street = c("first", "second", "third"),
tname = c("oak", "elm", "birch")
)
tree_data <- st_sf(data, geometry = points_sfc)
output$mymap <- renderLeaflet({
leaflet() %>%
addProviderTiles(providers$Stamen.Watercolor) %>%
# Centre the map in the middle of Toronto
setView(lng = -79.384293,
lat = 43.685, #43.653908,
zoom = 11) %>%
addCircles(tree_data)
})
}
shinyApp(ui, server)
解决方案
您需要指定 data = tree_data
,因为在 addCircles()
调用中,data
参数是最后一个。
leaflet() %>%
addProviderTiles(providers$Stamen.Watercolor) %>%
setView(lng = -79.384293,
lat = 43.685,
zoom = 11) %>%
addCircles(data = tree_data)
说明
addCircles()
调用中的第一个参数是 map
,它通过 %>%
运算符传入。第二个参数是 lng
,所以你在调用中所做的相当于
addCircles(lng = tree_data)
备选
另一种将数据发送到 addCircles()
函数的方法是通过 leaflet()
调用
leaflet(tree_data) %>%
addProviderTiles(providers$Stamen.Watercolor) %>%
setView(lng = -79.384293,
lat = 43.685,
zoom = 11) %>%
addCircles()