如何使用传单获取GPS坐标。附加addControlGPS

如何使用传单获取GPS坐标。附加addControlGPS,r,shiny,leaflet,R,Shiny,Leaflet,我正在使用leaftlet.extrasR软件包在地图中添加Gps控制。 我正在代码中使用扩展名addControlGPS: ... %>% addControlGPS(options = gpsOptions(position = "topleft", activate = TRUE, autoCenter = TRUE, maxZoom = 60,

我正在使用leaftlet.extrasR软件包在地图中添加Gps控制。 我正在代码中使用扩展名addControlGPS

...   %>% 
addControlGPS(options = gpsOptions(position = "topleft", activate = TRUE, 
                                             autoCenter = TRUE, maxZoom = 60, 
                                             setView = TRUE))  %>%
...
控制器工作正常


我需要提取Gps坐标,以便在代码中作为其他函数的参数重复使用。有什么方法可以做到这一点吗?

我最近在开发一个应用程序时遇到了类似的问题

可以使用_marker_click功能从传单地图提取gps坐标,其中是指定为传单渲染语句输出的地图标签

在我的例子中,这是我用来检索coords的代码块。在我的例子中,MAP对象的输出名称是“代码> PARKSMAP ”,因此在事件观察中要考虑的完整输入是<>代码> PARKSMAPMACREAREXPLAK/<代码>。此语句可以保存在一个变量中(在我的例子中是
pin
),该变量存储坐标数据。最后,您需要将其全部封装在反应式表达式中,以便在单击传单地图中的某个点时能够保存每个坐标

# code to load the park card once the click event on a marker is intercepted 
 observeEvent(input$parksMap_marker_click, { 
   pin <- input$parksMap_marker_click
   #print(Sys.time()) #uncomment to log coords
   #print(pin) #uncomment to log coords
   selectedPoint <- reactive(parks[parks$Latitude == pin$lat & parks$Longitude == pin$lng,])
   leafletProxy("parksMap", data = selectedPoint()) %>% clearPopups() %>% 
   addPopups(~Longitude,
             ~Latitude,
             popup = ~park_card(selectedPoint()$ParkName, selectedPoint()$ParkCode, selectedPoint()$State, selectedPoint()$Acres, selectedPoint()$Latitude, selectedPoint()$Longitude)
   )
 })
#拦截标记上的点击事件后加载泊车卡的代码
observeEvent(输入$parksMap\u marker\u单击,{
pin%
添加弹出窗口(~经度,
~z~纬度,
弹出=~park_卡(selectedPoint()$ParkName,selectedPoint()$ParkCode,selectedPoint()$State,selectedPoint()$Acres,selectedPoint()$Latitude,selectedPoint()$Longitude)
)
})

应用程序的完整github repo可用。

每次gps位置更新时,坐标都会写入
map.id+“\u gps\u located”
。您可以在git的文件夹中找到所有
传单.extra
绑定

工作示例

library(leaflet)
library(leaflet.extras)
library(shiny)

ui <- fluidPage(
  leafletOutput('map')
)

server <- function(input, output, session) {
  output$map <- renderLeaflet({ leaflet()%>%addTiles() %>% 
      addControlGPS(options = gpsOptions(position = "topleft", activate = TRUE, 
                                         autoCenter = TRUE, maxZoom = 60, 
                                         setView = TRUE))})
  observe(
    print(input$map_gps_located)
  )
}

shinyApp(ui, server)
图书馆(传单)
图书馆(单张、附加资料)
图书馆(闪亮)
用户界面