如何使用leaflet.extras addControlGPS

时间:2019-04-07 10:03:23

标签: r shiny leaflet

我正在使用 leaftlet.extras R包在地图内添加Gps控件。 我在代码内使用扩展名 addControlGPS

...   %>% 
addControlGPS(options = gpsOptions(position = "topleft", activate = TRUE, 
                                             autoCenter = TRUE, maxZoom = 60, 
                                             setView = TRUE))  %>%
...

控制器工作正常。

我需要提取Gps坐标以在我的代码中重新用作其他函数的参数。有什么办法吗?

2 个答案:

答案 0 :(得分:2)

每次gps位置更新时,坐标都会写入map.id+'_gps_located。您可以在htmlwidgets/bindings文件夹的git文件夹中找到所有leaflet.extras绑定。

工作示例

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)

答案 1 :(得分:0)

我最近在使用的应用程序遇到类似的问题。

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

就我而言,这是我用来检索坐标的代码块。在我的情况下,地图对象的输出名称为sub-score,因此在事件观察中要考虑的完整输入为parksMap。该语句可以保存在存储坐标数据的变量中(在我的情况下为parksMap_marker_click)。最后,您需要将其全部包裹在反应表达式中,以便在单击传单地图中的点时能够保存每个坐标。

pin

该应用程序的完整github存储库可用here