【问题标题】:Mapbox and leaflet for custom centering用于自定义居中的 Mapbox 和传单
【发布时间】:2015-11-26 17:19:16
【问题描述】:

如果这个问题是针对傻瓜的,我很抱歉。

我在 web 开发中使用 mapbox,我的地图旁边有“侧”面板。

问题是我想将地图放在我通过双击捕获的位置上。

我知道 map.setView([lat,lng],number)map.panTo([lat,lng]) 会产生居中魔法,但它们会在地图的实际大小或 div 宽度上进行。

我想知道是否有人知道我是否可以进行自定义居中,例如使用相同的地图大小但中心“计算”发生在地图的左半部分或右半部分。

我不知道如何捕捉这个“分辨率”,我只知道我需要地图使用的一半宽度。这是我想做的图片enter image description here

【问题讨论】:

    标签: javascript leaflet mapbox


    【解决方案1】:

    (可能与 GIS StackExchange 上的问题重复:Change the center point of leaflet

    您可能会对其中一个插件感兴趣:

    • Leaflet-active-area

      此插件允许您将地图的较小部分用作活动区域。所有定位方法(setView、fitBounds、setZoom)都将应用于该部分而不是所有地图。

    • Leaflet.ControlledBounds

      受 Leaflet-active-area 启发,自动检测地图中未被任何地图控件覆盖的最大区域,并将 setView、fitBounds、setZoom、getBounds 应用于该区域。

    【讨论】:

    • 谢谢,我正在阅读活动区域,但我的理解是,如果我使用它,设置视图将永久更改。我不想一直使用活动区域,只有当用户执行特定事件时。我错了吗?谢谢帮助
    • 当改变“活动区域”的事件触发时,我想你只需要再次调用map.setActiveArea({ /* styles */ }),可能之前加上map.getBounds(),之后加上map.fitBounds()
    【解决方案2】:

    最后我想出了如何以我想要的方式居中panTo()

    我用过这个 myLayer.on('click',function(e){ var vista=$('#map').width()/4; map.setView(new L.LatLng(e.latlng.lat, e.latlng.lng),15); map.panBy([-vista,0]);}

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-03-08
      • 1970-01-01
      • 1970-01-01
      • 2019-12-17
      • 1970-01-01
      • 1970-01-01
      • 2014-10-16
      • 1970-01-01
      相关资源
      最近更新 更多