gpt4 book ai didi

javascript - 带有 Shiny 的传单 map 上当前鼠标位置的坐标

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:11:19 27 4
gpt4 key购买 nike

我想访问 Shiny 的传单 map 中的当前鼠标位置。使用 Shiny 时,您可以使用 input$MAPID_click 获取点击事件的当前坐标,其中包含点击的纬度和经度。同样,我希望 input$MAPID_mouseover 包含鼠标光标的当前纬度和经度列表。

mapview::addMouseCoordinates(map) 在传单 map 中显示坐标。它使用 map.latlng.lng 和 map.latlng.lat,但我不知道如何调整代码以返回包含坐标的列表而不是显示它们。

理想情况下,这段代码应该可以工作:

library(shiny)
library(leaflet)

ui <- fluidPage(
leafletOutput("map"),
br(),
verbatimTextOutput("out")
)

server <- function(input, output, session) {
output$map <- renderLeaflet({
leaflet() %>% addTiles()
})

output$out <- renderPrint({
validate(need(input$map_mouseover, FALSE))
str(input$map_mouseover)
})
}

shinyApp(ui, server)

最佳答案

使用 onRenderhtmlwidgets 中,您可以添加一些 javascript 来传递来自 mousemove 的坐标到 Shiny 的输入,基于 this article .

library(shiny)
library(leaflet)
library(htmlwidgets)

ui <- fluidPage(
leafletOutput("map"),
br(),
verbatimTextOutput("out")
)

server <- function(input, output, session) {
output$map <- renderLeaflet({
leaflet() %>%
addProviderTiles("OpenStreetMap.Mapnik") %>%
setView(-122.4105513,37.78250256, zoom = 12) %>%
onRender(
"function(el,x){
this.on('mousemove', function(e) {
var lat = e.latlng.lat;
var lng = e.latlng.lng;
var coord = [lat, lng];
Shiny.onInputChange('hover_coordinates', coord)
});
this.on('mouseout', function(e) {
Shiny.onInputChange('hover_coordinates', null)
})
}"
)
})

output$out <- renderText({
if(is.null(input$hover_coordinates)) {
"Mouse outside of map"
} else {
paste0("Lat: ", input$hover_coordinates[1],
"\nLng: ", input$hover_coordinates[2])
}
})
}

shinyApp(ui, server)

enter image description here

关于javascript - 带有 Shiny 的传单 map 上当前鼠标位置的坐标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46132742/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com