gvisMap 可以绘制的点数是否有最大限制?或 gvisMap 不会绘制所有点

Is there a maximum number of points that can be plotted with gvisMap? or gvisMap wont plot all points

编辑 经过三天的兴趣不大,我添加了一个完全可重现的示例......下面的代码创建了 1400 个位置。前 700 个点以第一个区域为中心,后 700 个点以西北方向的第二个区域为中心。

datOne <- data.frame(
  Long = runif(700, -111.180000, -110.950000 ),
  Lat = runif(700, 43.180000, 43.440000),
  Area = "First")

datTwo <- data.frame(
  Long = runif(700, -111.850000, -110.900000),
  Lat = runif(700, 43.910000, 44.000000),
  Area = "Second")

dat <- rbind(datOne, datTwo)
dat$LatLong <- paste(dat$Lat, dat$Long, sep = ":")

head(dat)
       Long      Lat  Area                            LatLong
1 -110.9701 43.19509 First 43.1950901590148:-110.970063584852
2 -111.0258 43.25338 First 43.2533758980362:-111.025837010061
3 -111.1737 43.18016 First  43.180157370572:-111.173737878765
4 -111.1130 43.41193 First 43.4119294773275:-111.112970910808
5 -110.9909 43.34044 First 43.3404393909033:-110.990947539737
6 -110.9800 43.33428 First 43.3342766285082:-110.979969937215

如果我尝试用 gvisMap 绘制点,那么只有以第一个区域为中心的位置才会出现在地图中,如下面的代码

library(googleVis)
M2 <- gvisMap(dat, "LatLong", 
              options=list(showLine=TRUE, enableScrollWheel=TRUE, 
                           mapType='satlite', useMapTypeControl=TRUE, 
                           width="800", height="800",
                           colors = "['#0000ff']",
                           icons=paste0("{","'default': {'normal':
                                        'http://maps.google.com/mapfiles/kml/shapes/placemark_circle.png',\n",
                                        "'selected':'http://maps.google.com/mapfiles/kml/shapes/placemark_circle.png'",
                                        "}}")
              ))
plot(M2)

为了确认所有位置的格式都正确,我可以对数据框进行子集化以绘制点 500:1000,其中包括两个区域中的位置。将第一行代码更改为

M2 <- gvisMap(dat[500:1000, ], "LatLong", 

将正确显示两个区域中的位置。所以,问题似乎不是格式问题,但也许可以绘制的点数有上限..?

是否可以绘制此处包含的可重现数据中的所有位置?

任何绘制上面 dat 数据框中所有点的建议或代码将不胜感激。我很高兴从评论中提到的 leaflet 等其他包中获取建议的代码。

查看下面的示例。这使用 R 传单包并将弹出窗口绑定到区域列中的标记。

library(leaflet)

datOne <- data.frame(
  lng = runif(700, -111.180000, -110.950000 ),
  lat = runif(700, 43.180000, 43.440000),
  Area = "First")

datTwo <- data.frame(
  lng = runif(700, -111.850000, -110.900000),
  lat = runif(700, 43.910000, 44.000000),
  Area = "Second")

dat <- rbind(datOne, datTwo)
dat$latLng <- paste(dat$lat, dat$lng, sep = ":")

map<-leaflet(dat)
map<-addTiles(map)
map<-addMarkers(map,~lng,~lat,popup = ~as.character(Area))
map

是的,使用 Google 地图 API,通过 googleVis

可以显示最大点数

如此处所述:[https://developers.google.com/chart/interactive/docs/gallery/map#data-format]

注意:经纬度对选项加载地图的速度要快得多,尤其是对于大数据。我们建议您对大型数据集使用此选项。请访问 Google 地图 API 了解如何将您的地址转换为经纬度点。地图最多可显示400个条目;如果您的数据超过 400 行,则只会显示前 400 行。

上面的 leaflet 适用于大于 400 点的数据集。

这里只是把这个混在一起,因为问题是关于最大点数。如果您发现自己需要绘制数万或数百万数量级的点(或多边形或线),mapview 将是一个选项:

library(mapview)
library(sp)

datOne <- data.frame(
  lng = runif(70000, -111.180000, -110.950000 ),
  lat = runif(70000, 43.180000, 43.440000),
  Area = "First")

coordinates(datOne) <- ~ lng + lat
proj4string(datOne) <- "+init=epsg:4326"

mapview(datOne)

请注意 mapview 仅适用于空间 类,因此需要一个有效的 proj4string()