【问题标题】:How to make granulatity greater (smoother zooming) on leaflet map?如何在传单地图上使粒度更大(更平滑的缩放)?
【发布时间】:2021-11-18 01:00:14
【问题描述】:

我尝试为传单地图添加更大的粒度。我用谷歌搜索并在这里阅读了一些关于 SO 的帖子,但这对我没有帮助。我在leafletOptions 中添加了zoomSnap(根据leaflet 文档)作为自定义选项,但它不起作用。我还尝试在 onRender 部分添加自定义 js 代码,但它也不起作用。任何想法如何使它成为可能?我想像在 Mapbox 中一样缩放工作,它工作得非常顺利(例如https://docs.mapbox.com/mapbox-gl-js/example/simple-map/

这是我的可重现代码。评论部分是原始 JS,我也试过这个,但它不起作用:

library(shiny)
library(leaflet)
library(dplyr)
library(sf)
library(htmlwidgets)

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

server <- function(input, output, session) {
   
   coords <- quakes %>%
      sf::st_as_sf(coords = c("long","lat"), crs = 4326)

     output$map <- leaflet::renderLeaflet({
     leaflet::leaflet(
        options = leaflet::leafletOptions(
           zoomSnap = 0.1)
        ) %>%         
       leaflet::addTiles() %>%
       leaflet::setView(172.972965,-35.377261, zoom = 4) %>%
       leaflet::addCircleMarkers(
         data = coords,
         stroke = FALSE,
         radius = 6) #%>% 
        # htmlwidgets::onRender(
        #       "function(el, x) {
        #     var map = this;
        #     map.options({zoomSnap: 0.1});}" 
        #    )
   })
}

shinyApp(ui, server)

【问题讨论】:

    标签: r shiny leaflet r-leaflet


    【解决方案1】:

    试试leafletOptions(zoomSnap = 0.1, zoomDelta = 0.1)

    zoomSnap = x 是强制缩放级别为x 的倍数

    zoomDelta = y是以y为单位改变缩放级别

    【讨论】:

    • zoomDelta 指的是按钮 '+/-' 的放大。我之前注意到zoomSnap=0.1zoomSnap=1 之间存在细微差别,但是它仍然不像在 Mapbox 中那样流畅。这总比没有好。
    • 设置 zoomDelta 与我的鼠标滚轮配合使用。
    • 有趣,我看不出有没有zoomDelta 有什么区别。无论如何,使用zoomSnap 会更流畅一些
    猜你喜欢
    • 2019-02-10
    • 1970-01-01
    • 2023-03-15
    • 2011-05-22
    • 1970-01-01
    • 1970-01-01
    • 2012-09-22
    • 2015-05-08
    • 2013-08-02
    相关资源
    最近更新 更多