R语言 如何在单张Map上点击特定区域时获取经纬度值并存储在变量中

ru9i0ody  于 2023-06-19  发布在  其他
关注(0)|答案(1)|浏览(104)

我想建立一个简单的项目在shinshine,当我点击在Map上的特定区域,我可以得到经度和纬度值,并存储在变量(经度和纬度存储在不同的变量),所以我可以使用它的另一个目的,如显示值在valueBox或使用long和lat更新我建立在同一页面的数据框作为Map。使用此代码

ui <- leafletOutput("map", width = 800, height = 800),
      valueBoxOutput("simple_box")

server <- function(input, output, session){
   ## Leaflet map output
  output$map <- renderLeaflet({
    leaflet(apartment_map) %>% 
      addProviderTiles(providers$CartoDB.DarkMatter) %>% 
      addPolygons(fillColor = ~pal(price_mean),
                  weight = 1,
                  opacity = 1,
                  color = "black",
                  dashArray = "3",
                  fillOpacity = 0.5,
                  label = paste0("Kecamatan: ", apartment_map$NAME_2),
                  popup = popup.cont) %>% 
      addLegend("bottomright", 
                pal = pal,
                values = ~price_mean,
                title = "Apartment Price Mean",
                labFormat = labelFormat(digits = 2),
                opacity = 1)
  })

  # Preparing variable to store longitude and latitude
  coordinates <- reactiveValues(latitude = NULL, longitude = NULL)
  
  #Get lngitude and latitude
  observeEvent(input$map_marker_click, {
    click <- input$map_marker_click
    if (!is.null(click)) {
      coordinates$latitude <- click$lat
      coordinates$longitude <- click$lng
    }
  })
  
  #Show the value in siple value box
  output$simple_box <- renderValueBox({
    valueBox(
      value = coordinates$latitude,
      subtitle = "Longitude value"
    )
  })
}

我读了很多与我的问题有关的主题,但仍然没有得到运气。请帮帮我,谢谢!

y1aodyip

y1aodyip1#

你用错了input$map_marker_click。瓣叶Map上有几个“点击”变量:

  • input$map_marker_click:获取点击标记并获取其layerId或组和坐标
  • input$map_shape_click:获取点击多边形,矩形,圆形等...并获取其layerId或组和坐标
  • input$map_click:获取Map上任意位置的点击坐标

在这里我认为你想使用map_shape_clickmap_click,因为你在这个代码中的传单Map上没有任何标记。

observeEvent(input$map_click, {
    click <- input$map_click
    if (!is.null(click)) {
      coordinates$latitude <- click$lat
      coordinates$longitude <- click$lng
    }
  })

相关问题