Leaflet addMiniMap叠加shapefile报错:condition has length>1求助
解决Leaflet addMiniMap报错:
the condition has length > 1 错误原因
报错源于addMiniMap的tiles参数用法错误:该参数仅支持传入瓦片提供者字符串(如"OpenStreetMap")或瓦片URL模板,不能直接传入完整的leaflet地图对象。当你将mini_map(leaflet实例)传给tiles时,代码会尝试判断它是否属于内置瓦片集合,导致逻辑向量长度大于1,触发if条件判断错误。
修正后的代码
library(leaflet) library(sf) # 读取并转换矢量数据坐标系 shapefile <- st_read("qh320kj0191.shp") # shapefile <- st_read("vallejo.RDS") shapefile <- st_transform(shapefile, crs = 4326) # 创建主地图并添加带自定义图层的迷你地图 main_map <- leaflet() %>% addTiles() %>% addPolygons(data = shapefile, color = "blue", weight = 1) %>% addMiniMap( # 指定迷你地图的瓦片源 tiles = providers$OpenStreetMap, # 传入要在迷你地图显示的多边形图层 layer = addPolygons(data = shapefile, color = "blue", weight = 1), toggleDisplay = TRUE, minimized = FALSE ) main_map
关键修改点
- 移除单独创建
mini_map的冗余代码 - 将
tiles参数替换为合法的瓦片提供者(如providers$OpenStreetMap) - 通过
layer参数传入自定义多边形图层,实现迷你地图的内容定制
如果主地图和迷你地图使用相同瓦片,可省略tiles参数,默认继承主地图瓦片源:
main_map <- leaflet() %>% addTiles() %>% addPolygons(data = shapefile, color = "blue", weight = 1) %>% addMiniMap( layer = addPolygons(data = shapefile, color = "blue", weight = 1), toggleDisplay = TRUE, minimized = FALSE )
内容的提问来源于stack exchange,提问作者Salvador
相关产品推荐
相关产品推荐

