我可以防止将 Leaflet 地图平移出世界边缘吗?

IT技术 javascript maps leaflet
2021-02-21 08:41:17

有没有办法限制平移出世界的边缘?在这张照片上,棕色是世界,灰色是空虚。我想让它不可能像这样平移。

离开这个世界

3个回答

Leaflet 允许您使用选项控制地图抵抗被拖出边界的程度maxBoundsViscosity(值:0 到 1)。将其设置为最大值将完全禁止拖动越界。

var map = new L.Map('map', {
  center: bounds.getCenter(),
  zoom: 5,
  layers: [osm],
  maxBounds: bounds,
  maxBoundsViscosity: 1.0
});

功能在 1.0.0 中可用。有关拉请求包括工作示例

我没有投反对票,但这在 rc3 中似乎不起作用。
2021-04-20 08:41:17
@gsuresh92 不适用于 mapbox。此时mapbox 使用的是传单 0.7.7,但此功能在 1.0-beta1 及更高版本中。
2021-04-23 08:41:17
@catbadger 谢谢。看起来他们重构并移动了那个选项选项调试示例不再有效;我会检查它是否是回归。
2021-04-23 08:41:17
这个选项还有效吗?我无法用 mapbox 做类似的事情
2021-04-29 08:41:17
@catbadger 我弄错了,看起来rc3调试示例仍然有效。这是你期望的吗?
2021-05-14 08:41:17

这就是我为世界地图解决的方法

var map = L.map('map').setView([51.505, -0.09], 3);
L.tileLayer('http://{s}.tile.osm.org/{z}/{x}/{y}.png').addTo(map);

var southWest = L.latLng(-89.98155760646617, -180),
northEast = L.latLng(89.99346179538875, 180);
var bounds = L.latLngBounds(southWest, northEast);

map.setMaxBounds(bounds);
map.on('drag', function() {
    map.panInsideBounds(bounds, { animate: false });
});

见工作示例既为版本.7.0.7 http://jsfiddle.net/exqar2w4/18/1.0.3版本 http://jsfiddle.net/exqar2w4/20/

并非完全默认,但答案是一种方式
2021-04-22 08:41:17
map.on('drag', function() { map.panInsideBounds(bounds, { animate: false }); });. 这就是我想要阻止反弹效果的方法。谢谢 !
2021-04-23 08:41:17
@hughjdavey 不知道在定位地球时刚刚得到了那些坐标,但是 90 太明显了
2021-04-27 08:41:17
有没有标准的方法或传单功能来做到这一点?
2021-05-15 08:41:17
感谢您的回答,这很好用。有什么理由让背阔肌如此具体?我试过这个,即使在[ -90, -180 ]
2021-05-15 08:41:17

我使用的react-leaflet语法与上面的略有不同,但我认为展示一些合理的使用范围会有所帮助(上面的答案都没有这样做)。

import Leaflet from 'leaflet'
import { Map as LeafletMap} from 'react-leaflet'

// Set map bounds.
// Allow scroll over the international date line, so users can comfortably zoom into locations near the date line.
const corner1 = Leaflet.latLng(-90, -200)
const corner2 = Leaflet.latLng(90, 200)
const bounds = Leaflet.latLngBounds(corner1, corner2)

然后将其呈现为...

<LeafletMap
  maxBoundsViscosity={1.0}
  maxBounds={bounds}
  {...otherProps}
>
谢谢!这正是我要找的
2021-04-30 08:41:17