【问题标题】:Leafletjs show a single wrapped mapLeafletjs 显示单个包装的地图
【发布时间】:2020-07-15 08:09:50
【问题描述】:

我想显示一张世界地图并将其包裹起来,以便每个区域在屏幕上只显示一次。请参考小提琴http://jsfiddle.net/8m13d6vs/

var osmUrl = 'http://{s}.tile.osm.org/{z}/{x}/{y}.png',
    osm = L.tileLayer(osmUrl, {
            noWrap: false,
            attribution: "<a href='http://openstreetmap.org'>OpenStreetMap</a>"
          });

var map = L.map('map').setView([0, 0], 1).addLayer(osm);

在上面的小提琴中,换行是打开的,但世界地图是重复的。我想要一个单一的世界地图,并且在鼠标左/右键拖动时,它应该环绕。它也应该响应该区域。有什么办法可以做到这一点?希望我的问题陈述是可以理解的。

【问题讨论】:

    标签: leaflet openstreetmap


    【解决方案1】:

    有传单worldCopyJump 选项:

    var map = L.map('map', {worldCopyJump: true}).setView([0, 0], 1).addLayer(osm);
    

    默认为false,但将其设置为true 将在用户平移超出地图边界时复制地图内容。

    【讨论】:

      【解决方案2】:

      这听起来像是对“wrap”定义的误解:

      在 Leaflet 的 Tile Layer / Grid Layer 选项noWrap 的上下文中,它说:

      图层是否缠绕在反子午线周围。如果true,GridLayer 将只在低缩放级别显示一次。

      所以听起来noWrap: true 应该可以实现您的目标。

      更新的 JSFiddle:http://jsfiddle.net/8m13d6vs/3/

      顺便说一句,您应该考虑将 Leaflet 版本升级到 1+

      【讨论】:

      • 我相信 @sagargurtu 希望地图可以换行,但是当您将地图向左或向右平移时,他们只希望显示每个大陆的一个实例。
      • @Iavor mm 可能,听起来好像有很大的误解。感谢您指出!
      • 没问题?。我正在尝试查看文档中是否有任何内容可以完成 sagargurtu 正在寻找的内容。
      • @Iavor:我不太确定 OP 到底想要实现什么。如果这个想法是为了防止两次看到相同的位置,那么您将不得不使用地图的maxZoom 并在地图容器大小发生变化时对其进行调整。同时设置worldCopyJump 地图选项。可能已经有一些关于它的帖子,但请随时提供您自己的答案。我不会编辑这个,以后可能会删除它,因为这听起来离题了。
      • @Iavor 是对的。在您更新的小提琴中,当我向右或向左平移地图时,地图被拖动。相反,我希望地图停留在一个地方,并且地图的内容应该只显示每个区域一次。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-30
      • 1970-01-01
      • 2015-07-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多