Shiny Application内的Google街景容器

时间:2015-05-05 12:23:17

标签: javascript r google-maps-api-3 shiny rstudio

我一直在尝试使用RStudio的Shiny库创建一个带有嵌入式Google街景的Web应用程序;但是无法在应用程序中获取街景视图。 我一直在使用以下示例JavaScript和HTML: https://developers.google.com/maps/documentation/javascript/examples/streetview-embed 我在这里粘贴:

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title>Street View containers</title>
    <style>
      html, body, #map-canvas {
        height: 100%;
        margin: 0px;
        padding: 0px
      }
    </style>
    <script src="https://maps.googleapis.com/maps/api/js?v=3.exp&signed_in=true"></script>
    <script>
function initialize() {
  var bryantPark = new google.maps.LatLng(37.869260, -122.254811);
  var panoramaOptions = {
    position: bryantPark,
    pov: {
      heading: 165,
      pitch: 0
    },
    zoom: 1
  };
  var myPano = new google.maps.StreetViewPanorama(
      document.getElementById('map-canvas'),
      panoramaOptions);
  myPano.setVisible(true);
}

google.maps.event.addDomListener(window, 'load', initialize);

    </script>
  </head>
  <body>
    <div id="map-canvas"></div>
  </body>
</html>

我的ui和服务器脚本是:

ui.R

shinyUI(fluidPage(
  titlePanel("Google StreetView"),
  mainPanel(
    uiOutput("inc")
  )
))

server.R

library(shiny)

shinyServer(function(input, output) {
  getPage<-function() {
    return(includeHTML("googleStreetViewContainer.html"))
  }
  output$inc<-renderUI({getPage()})
})

我已经在ui.R文件中直接使用includeHTML尝试了几个不同版本的ui.R和server.R文件,而不是在ui.R中定义getPage函数和使用标签$ script。文件。

我没有收到任何错误,但街景视图没有渲染。有什么想法吗?

1 个答案:

答案 0 :(得分:4)

您可以使用我的googleway包和有效的Google Maps API密钥

来执行此操作

在Shiny中,您可以renderGoogle_map()中的servergoogle_mapOutput()中的UI来加载情节。

然后google_map()运行地图。当它打开时,您可以像往常一样在谷歌地图上访问卫星/街景

library(shiny)
library(shinydashboard)
library(googleway)

df <- data.frame(lat = -37.817714,
                lon = 144.967260,
                info = "Flinders Street Station")

map_key <- "your_api_key_here"

ui <- dashboardPage(
  dashboardHeader(),
  dashboardSidebar(),
  dashboardBody(
    box( google_mapOutput("myMap") )
  )
)


server <- function(input, output){

    output$myMap <- renderGoogle_map({
        google_map(location = c(df$lat, df$lon), key = map_key, search_box = T)
     })
}

shinyApp(ui, server)

enter image description here