在R Shiny中,addMarkers需要非NULL的经度/纬度值

时间:2018-06-13 09:00:28

标签: r shiny

我正在开发一个显示Map的Shiny Application,所以我使用Leaflet()库来显示地图。以下是我的UI.R和Server.R

UI.R

library(shiny)
library(leaflet)

shinyUI(
  dashboardPage(
   dashboardHeader(title = div(img(src="new.gif", height = 40, width = 
                   200),"My Dashboard",width = 300)),
   dashboardSidebar(
              sidebarMenu(
                   menuItem("Location", tabName = "Location")
                          )
                    )
   dashboardBody(
    tabItem("Map",
            fluidRow( 
              leafletOutput("mymap")
                    )
            )

Server.R

 library(shiny)
 library(leaflet)

 shinyServer(function(input,output,session){

   output$mymap <- renderLeaflet({
                   leaflet() %>%
                  addTiles() %>%  # Add default OpenStreetMap map tiles
                  addMarkers(lng=df$Lon, 
                      lat=df$Lat)%>%
                  addPolylines(lng=df$Lon, 
                               lat=Lat)
                                })
    })

正在从数据框Lattitude

中检索Longitudedf的值
  df <- data.frame("lat" = c(12.8908,12.891,12.890), 
                  "Lon" = c(77.5904,77.588,77.5868))

因此,当我运行上述脚本时,它会显示Error: addMarkers requires non-NULL longitude/latitude values.

我无法追踪错误,我尝试将其转换为向量,因为validateCoords()要求latlonvector格式,但它没有救命。

1 个答案:

答案 0 :(得分:1)

在数据框df中,这些列称为“ lat”和“ Lon”,但是在addMarkers()中,您尝试使用“ Lat”和“ Lon”列。因此,您拼写纬度的方式有所不同(纬度与纬度)。 这样可以解决您的问题吗?

除此之外,在addPolylines()中指定lat = Lat。如果您想再次使用数据框df中的列,则应为lat = df $ lat