Как получить координаты GPS с помощью leaflet.extras addControlGPS

Я использую пакет листовка.дополнения R, чтобы добавить управление GPS на карту. Я использую расширение добавитьControlGPS внутри своего кода:

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

Контроллер работает нормально.

Мне нужно извлечь координаты GPS для повторного использования в моем коде в качестве аргументов для других функций. Есть ли способ сделать это?

Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
2
0
955
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Недавно у меня была похожая проблема с приложением, над которым я работал.

Вы можете извлечь GPS-координаты из карты буклета с помощью функции _marker_click, где это метка карты, которую вы указываете в качестве выходных данных для оператора рендеринга буклета.

В моем случае это фрагмент кода, который я использовал для получения координат. В моем случае выходным именем объекта карты было parksMap, поэтому полное входное значение для наблюдения за событием было parksMap_marker_click. Этот оператор можно сохранить в переменной (в моем случае 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)
   )
 })

Полный репозиторий приложения на github доступен здесь.

Ответ принят как подходящий

Каждый раз, когда местоположение GPS обновляется, координаты записываются в map.id+'_gps_located'. Вы можете найти все привязки leaflet.extras в папке htmlвиджеты/привязки в их git.

Рабочий пример

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)

Другие вопросы по теме