1
votes

AIM

Create a leaflet map using Shiny that represents one set of data with circle marker and add a markers for points using a second set of data.

ISSUE The "circle" markers are working, but "markers" are not. The "addMarkers" code is not being read or is being ignored.

SERVER

    library(shiny)
    library(leaflet)

    server <- function(input, output, session) {

    points <- read.csv(textConnection("Loc,STZip,Lat,Long,Vol
                                Loc1,17699,40.0185,-76.297582,15
                                Loc2,76177,32.949819,-97.31406,20
                                Loc3,27801,35.935125,-77.77076,17
                                Loc4,52404,41.947335,-91.68819,12
                                Loc5,19380,39.983108,-75.59332,18
                                "))
    newpoints <- read.csv(textConnection("Loc,STZip,Lat,Long,Vol
                                 Loc6,18640,41.317242,-75.77942,12
                                   Loc7,38133,35.208709,-89.80518,20
                                "))

    output$mymap <- renderLeaflet({
    leaflet() %>%
    addProviderTiles("Stamen.TonerLite",
                   options = providerTileOptions(noWrap = TRUE)) %>%
    addCircleMarkers(lng = ~Long, lat = ~Lat, radius = ~Vol, layerId = NULL,
             group = "NGS_Facilities", stroke = TRUE, color = "#0000CC",    weight = 5, opacity = 0.5,
             fill = TRUE, fillColor = "#0000CC", fillOpacity = 0.2,   dashArray = NULL,
             popup = ~Loc, options = pathOptions(), clusterOptions = NULL, clusterId = NULL,
             data = (newpoints))  %>%

   #this code is not being read or is ignored...
   addMarkers(lng = ~Long, lat = ~Lat, popup = ~Loc, data = (newpoints))


})

}

UI

library(shiny) library(leaflet)

r_colors <- rgb(t(col2rgb(colors()) / 255))
 names(r_colors) <- colors()

ui <- fluidPage(
   title = "Map of Stuff",
   leafletOutput("mymap", width = 1800, height = 800),
   p()
)
1
I had an error in code earlier. I moved the %>% to the end of the previous line as you suggested and changed the "addmarker" code to the following: addMarkers(lng = ~Long, lat = ~Lat, data = (newpoints)) I am not getting errors, but I am not getting the markers either.Brad_A_Tx_

1 Answers

2
votes

This is a weird error... fought with it for a while, until I realized it was a problem with how you read your data.

> newpoints
                                      Loc STZip      Lat      Long Vol
1                                    Loc6 18640 41.31724 -75.77942  12
2                                    Loc7 38133 35.20871 -89.80518  20
3                                            NA       NA        NA  NA

Because your end quote is on a new line, it leaves a break. This causes the last line in your data to be NAs. When I was debugging, it seemed like anything I put before the data would display, but after would fail.

To fix this, read your data as:

  points <- read.csv(textConnection("Loc,STZip,Lat,Long,Vol
                                Loc1,17699,40.0185,-76.297582,15
                                Loc2,76177,32.949819,-97.31406,20
                                Loc3,27801,35.935125,-77.77076,17
                                Loc4,52404,41.947335,-91.68819,12
                                Loc5,19380,39.983108,-75.59332,18"))
  newpoints <- read.csv(textConnection("Loc,STZip,Lat,Long,Vol
                                 Loc6,18640,40.0185,-76.297582,12
                                   Loc7,38133,35.208709,-89.80518,20"))

For whatever reason, Leaflet bugs out if the last row is all NAs