繁体   English   中英

R 中的传单:基于数据集经纬度范围的 SetView

[英]Leaflet in R: SetView based on range of latitude and longitude from dataset

在ggmap中,可以根据输入数据的经纬度设置地图的视图,其中csv的两列分别是经度和纬度,即

sep <- read.csv("31R_SEP_assets_csv.csv")

# get the map
bbox <- make_bbox(sep$Longitude, sep$Latitude, f = 0.3)
map <- get_map(bbox)

我在传单中搜索类似的功能,但到目前为止,我只找到了 setView() 接受纬度和经度的实际值,即

m <- leaflet() %>% setView(lng = -71.0589, lat = 42.3601, zoom = 12)
m %>% addTiles()

要使用什么功能?

到目前为止,这是我的代码

library(ggmap)
library(ggplot2)
library(historydata)
library(leaflet)
library(rgdal)

setwd("d:/GIS/31R")
sep <- read.csv("31R_SEP_assets_csv.csv")

Sub1 <- sep[grep("SEP.12", names(sep))]
sep$newCol <- 100*rowSums(Sub1)/rowSums(sep[4:7])

# create a new grouping variable
Percent_SEP12_Assets <- ifelse(sep[,8] <= 33, "Less than 33%", ifelse(sep[,8] >= 66, "More than 66%", "Between 33% and 66%"))


leaflet(data = sep[]) %>% addTiles() %>%
  addMarkers(~Longitude, ~Latitude,  popup = ~as.character(paste(Site, Percent_SEP12_Assets , sep=", "))) 

并且输出一直缩小

在此处输入图片说明

dput(sep)
structure(list(Site = structure(1:5, .Label = c("Staten Island\\31R001", 
"Staten Island\\31R002", "Staten Island\\31R003", "Staten Island\\31R004", 
"Staten Island\\31R005"), class = "factor"), Latitude = c(40.508874, 
40.577256, 40.520825, 40.552373, 40.529697), Longitude = c(-74.244048, 
-74.100135, -74.211845, -74.195516, -74.187532), Windows.SEP.11 = c(63L, 
174L, 11L, 85L, 163L), Mac.SEP.11 = c(0L, 1L, 4L, 0L, 0L), Windows.SEP.12 = c(124L, 
185L, 9L, 75L, 23L), Mac.SEP.12 = c(0L, 1L, 32L, 1L, 0L), newCol = c(66.3101604278075, 
51.5235457063712, 73.2142857142857, 47.2049689440994, 12.3655913978495
)), .Names = c("Site", "Latitude", "Longitude", "Windows.SEP.11", 
"Mac.SEP.11", "Windows.SEP.12", "Mac.SEP.12", "newCol"), row.names = c(NA, 
-5L), class = "data.frame")

更新

试过

addTiles(do.call(fitBounds, args = c(list(map = leaflet()), as.list(setNames(make_bbox(sep$Longitude, sep$Latitude, f = 0.3), c("lng1", "lat1", "lng2", "lat2")))))

地图是空白的

然后尝试

leaflet(data = sep[]) %>% addTiles()  %>%
  fitBounds(~min(sep$Longitude), ~min(sep$Latitude), ~max(sep$Longitude), ~max(sep$Latitude)) %>%
  addMarkers(~Longitude, ~Latitude,  popup = ~as.character(paste(Site, Percent_SEP12_Assets , sep=", "))) 

而且地图还是缩小了...

解决方法

我正在使用使用经度和纬度平均值的 setView

leaflet(data = sep[]) %>% 
  setView(lng = mean(sep$Longitude), lat = mean(sep$Latitude), zoom = 12) %>% addTiles()  %>%
  addMarkers(~Longitude, ~Latitude,  popup = ~as.character(paste(Site, Percent_SEP12_Assets , sep=", "))) 

到目前为止似乎工作......

利用

fitBounds(lng1 = min(table$lng), 
          lat1 = min(table$lat), 
          lng2 = max(table$lng), 
          lat2 = max(table$lat))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM