You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.13 04:05:00