使用Shining和传单访问R中的Javascript映射

使用Shining和传单访问R中的Javascript映射,javascript,r,google-maps,shiny,leaflet,Javascript,R,Google Maps,Shiny,Leaflet,我目前正在尝试使用googlelayer作为Shinny R中传单地图的基础层,这就是为什么我一直在使用shinyJs将Js脚本插入到我的R代码中以插入地图,问题是我无法在Javascript代码之外访问地图,如果我查看Js控制台,它会说“地图容器已经初始化”。我提供给你应用程序的代码作为一个可复制的科学 ################### #### Library ###### ################### library(leaflet) library(shiny) libr

我目前正在尝试使用googlelayer作为Shinny R中传单地图的基础层,这就是为什么我一直在使用shinyJs将Js脚本插入到我的R代码中以插入地图,问题是我无法在Javascript代码之外访问地图,如果我查看Js控制台,它会说“地图容器已经初始化”。我提供给你应用程序的代码作为一个可复制的科学

###################
#### Library ######
###################
library(leaflet)
library(shiny)
library(shinythemes)
library(shinyjs)
#library(raster)
###################

setwd("D:\\R")


ui <- fluidPage(
  tags$head(
    tags$link(rel="stylesheet", href="https://unpkg.com/leaflet@1.0.3/dist/leaflet.css"),
    tags$script(src="shared/shiny.js"),
    tags$script(src="https://maps.googleapis.com/maps/api/js?key=AIzaSyAQvaBc5_RruTllCvOxy3i9YNFYlaDzaJ8"),
    tags$script(src="https://unpkg.com/leaflet@1.0.3/dist/leaflet.js"),
    tags$script(src='https://unpkg.com/leaflet.gridlayer.googlemutant@latest/Leaflet.GoogleMutant.js')
  ),
  sidebarLayout(
    sidebarPanel(
      actionButton(inputId = "button",
                   label = "coucou")
    ),
    mainPanel(
        leafletOutput("mymap")
    )
  #)
  ),
  tags$script(HTML('$(document).on("shiny:connected", function(){
  var mymap = L.map("mymap").setView([45.777222,3.087025],4);
  var roads = L.gridLayer.googleMutant({type : "satellite"}).addTo(mymap);
  var el = document.getElementById(mymap.id);
  Shiny.onInputChange("mymap",el);

})'))
)


server <- function(input, output) {
  # output$mymap <- renderLeaflet({
  #   leaflet() %>%
  #     setView(-1.252441, 47.802332, 4)
  # })

  # jean <- reactive(input$el)
  #print(output$mymap)

  observeEvent(input$button, {
    output$mymap <- renderLeaflet({
    leafletProxy("mymap", data =input$mymap) %>%
      addMarkers(45.777222,
               3.087025,
               "btn")
    })
  })

  observeEvent(input$mymap_click, {
    cat("vroum")
  })



}

shinyApp(ui = ui, server = server)
###################
####图书馆######
###################
图书馆(单张)
图书馆(闪亮)
图书馆(shinythemes)
图书馆(shinyjs)
#图书馆(光栅)
###################
setwd(“D:\\R”)

ui您可以直接使用我的Google Way软件包绘制Google地图

library(shiny)
library(googleway)

ui <- fluidPage(
    google_mapOutput(outputId = "map", height = 600)
)

server <- function(input, output){

    output$map <- renderGoogle_map({
        google_map(key = 'your_api_key')
    })

    observeEvent(input$map_map_click, {
        print(input$map_map_click)
    })

}

shinyApp(ui, server)
库(闪亮)
图书馆(谷歌)

ui要回答您的问题,您可以使用以下代码访问地图:

  var el = document.getElementById("mymap");
  var map = $(el).data("leaflet-map"));
但这并不能让你添加谷歌层,因为你需要传单版本1.0.3,而R软件包使用的是版本0.7,你不能像以前那样加载版本1.0.3,因为这会引起与R软件包的兼容性问题


我也在尝试这样做,但到目前为止我什么也没发现。如果你能做到,我会很高兴知道如何做到。

在传单上添加图层与传单兼容吗?哦,好的,因为我需要能够在地图上添加光栅图层,所以我必须找到另一种方法,但谢谢你……你的光栅图层是如何生成/存储的?我可能能够让它工作,因为谷歌地图允许你覆盖图像和KML图层。这是一个tiff图像,你希望它如何覆盖?有一个将图像绑定到地图的工具,这是你想要的吗?