在Shiny的reactive()中使用osrmTrip出现坐标空值错误的排查
解决Shiny应用中
addPolylines非空经纬度错误的排查要点 出现Warning: Error in validateCoords: addPolylines requires non-NULL longitude/latitudes错误的核心原因是传给addPolylines的经纬度参数为空值或无效值,按以下方向逐一排查:
- 验证路线计算输出:检查生成路线的工具(如osrmRoute、google_directions)是否返回有效数据。在调用
addPolylines前,打印经纬度列(如print(route_data$longitude)),确认是否存在非空的数值向量。 - 确认当前定位有效性:检查获取当前定位的代码(如
input$lat/input$lon)是否返回有效值。定位失败、权限未授予或设备定位关闭都会导致起点经纬度为空,进而引发后续路线计算失败。 - 清理地点数据框:检查你的地点数据框中是否存在经纬度为NA或空值的记录。可以用
sum(is.na(your_places_df$lon))统计无效值,提前用na.omit(your_places_df)清理数据,避免计算出无效的"最近地点"。 - 核对参数传递正确性:确认
addPolylines的参数是否匹配。比如是否传反了经纬度、是否用错了列名(如把lng写成lon),确保传入的列名与数据框中的列名完全一致。 - 处理嵌套路线数据:部分路线API返回的是嵌套结构的数据框,需要先扁平化(如用
tidyr::unnest())才能提取出一维的经纬度向量,否则传入addPolylines的会是列表而非有效数值。
若能提供定位获取、最近地点计算及addPolylines调用的核心代码片段,可更精准定位问题。
内容的提问来源于stack exchange,提问作者Jorge Hernández
相关产品推荐
相关产品推荐

