对于我正在进行的一个小项目,我需要能够在leaflet.js驱动的图像映射上放置一个标记并更新该标记的位置(如果它被拖动).我使用以下代码试试这个,但它失败了.我收到错误'标记未定义'.我不知道为什么它不起作用 - 也许你们可以帮助我?;)
function onMapClick(e) {
gib_uni();
marker = new L.marker(e.latlng, {id:uni, icon:redIcon, draggable:'true'};
map.addLayer(marker);
};
marker.on('dragend', function(event){
var marker = event.target;
var position = marker.getLatLng();
alert(position);
marker.setLatLng([position],{id:uni,draggable:'true'}).bindPopup(position).update();
});
Run Code Online (Sandbox Code Playgroud) 我想要一个应用程序,它会在点击时产生新的点,类似于这里: R传单如何点击地图并添加一个圆圈
但标记应该是可拖动的,拖动时,坐标应该更新,显示在dataTable中.我通过mouseout事件实现了这个目标.我找到了这个解决方案,但如果我设置了两个点,它们将具有相同的坐标(从第二个点开始),并且只有在触发mouseout时才会刷新.
library(shiny)
library(leaflet)
df <- data.frame(longitude = 10.5, latitude = 48)
ui <- fluidPage(
navbarPage("Title",
tabPanel("Map",
mainPanel(leafletOutput("map", width = "100%", height = "700")
)),
tabPanel("Data", dataTableOutput("table"))
)
)
server <- function(input, output) {
output$map <- renderLeaflet({
leaflet() %>% addTiles()
})
df_r <- reactiveValues(new_data = df)
# reactive list with id of added markers
clicked_markers <- reactiveValues(clickedMarker = NULL)
observeEvent(input$map_click, {
click <- input$map_click
click_lat <- click$lat
click_long <- click$lng
clicked_markers$clickedMarker <- c(clicked_markers$clickedMarker, 1)
id <- length(clicked_markers$clickedMarker)
# Add …Run Code Online (Sandbox Code Playgroud)