2016-02-27 4 views
1

У меня огромный массив данных, но даже если я использую только 5 точек данных, моя карта не создается. Код, который показан ниже, работает хорошо, но я просто не получаю карту. Вероятно, я пропустил очень маленький пункт и был бы рад помочь.Блестящее приложение не генерирует карту

library(shiny) 
library(leaflet) 
library(data.table) 

dd<- data.table(entitynum=c(400, 201, 602, 304,401), 
      londd=c(42.3, 42.4, 43.5, 42.6,42.2), 
      latdd=c(-71.1, -71.2, -71.3, -71.4,-71), 
      DAY_WEEK=c("Sunday", "Monday", "Tuesday", "Wednesday","Thursday")) 

#Set up ui 
ui <- shinyUI(fluidPage(title="", 

#App title 
titlePanel(h3("My tool", align="left")), 

#App layout 
sidebarLayout(position="left", 

#App sidePanel content and styles 
sidebarPanel(h5("Hello", width=2), 
checkboxGroupInput(inputId="InFlags", label=h4("DAYS"), 
choices=setNames(object=c("Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"), 
nm=c("Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"))), 
position="left"), 

#App mainPanel content and styles 
mainPanel(fluidRow(leafletOutput(outputId="lmap", width="100%",height = "100%"))) 

) 
) 
) 



server <- function(input, output){ 


#Build leaflet map 
lmap <- leaflet(data=dd)%>% 
#addTiles()%>% 
#setView(lng="-71.094824",lat="42.343479",zoom=10) %>% 
addProviderTiles(provider="MapQuestOpen.OSM") 
fitBounds(~min(londd), ~min(latdd), ~max(londd), ~max(latdd)) 

#Filter data 
datFilt <- reactive(dd[DAY_WEEK%in%input$InFlags]) 

#Add markers based on selected flags 
observe({ 
if(nrow(datFilt())==0) { 
    print("Nothing selected") 
    leafletProxy("lmap") %>% clearMarkerClusters() 
} 
else{ 
    print(paste0("Selected: ", unique(input$InFlags))) 
    leafletProxy("lmap", data=datFilt()) %>% 
    clearMarkerClusters() %>% 
    addCircleMarkers(lng=~londd, lat=~latdd, 
        clusterOptions=markerClusterOptions(), weight=3, 
        color="#33CC33", opacity=1, fillColor="#FF9900", 
        fillOpacity=0.8) 
} 
}) 

output$lmap <- renderLeaflet(lmap) 
} 

ответ

1

Ваш height аргумент не может быть процентом.

От the shiny website

Обратите внимание, что, по высоте, с использованием "авто" или "100%" вообще не будет работать, как и ожидалось, из-за того, как высота вычисляется с HTML/CSS

Используйте что-то вроде:

leafletOutput(outputId="lmap", width="100%", height = 500))) 

или

leafletOutput(outputId="lmap", width="100%", height = "500px"))) 

Также необходимо скорректировать код карты. Лат/LNG в setView должен быть номер

lmap <- leaflet(data=dd)%>% 
setView(lng=-71.094824,lat=42.343479,zoom=10) %>% 
addProviderTiles(provider="MapQuestOpen.OSM") 

Или, если вы собираетесь использовать fitBounds, вам нужна труба %>%

lmap <- leaflet(data=dd)%>% 
    #addTiles()%>% 
# setView(lng=-71.094824,lat=42.343479,zoom=10) %>% 
    addProviderTiles(provider="MapQuestOpen.OSM") %>% 
    fitBounds(~min(londd), ~min(latdd), ~max(londd), ~max(latdd)) 
+0

Спасибо. Я смог это исправить. Он работает сейчас. Хотя у меня другая проблема, когда я запускаю это приложение через блестящий сервер, чтобы иметь возможность поделиться им с другим, он не создает карты. Приложение работает отлично, когда я работаю на своей машине. Можете ли вы подсказать, что может быть причиной этого? – Yatish

+0

@ Yatish Я не могу понять, почему это так. Возможно, вам лучше принять этот ответ, а затем задать новый/отдельный вопрос, чтобы больше людей его увидели и могут потенциально помочь – SymbolixAU

+0

Ох. Я понял. Благодарю. это было полезно – Yatish

Смежные вопросы