Leaflet 是否可以为其他坐标系执行map.getBounds?

Leaflet 是否可以为其他坐标系执行map.getBounds?,leaflet,Leaflet,我在我的宣传单webmap中执行以下代码 map.getBounds().getWest() + "&y1=" + map.getBounds().getSouth() + "&x2=" + map.getBounds().getEast() + "&y2=" + map.getBounds().getNorth() 结果显示WGS84(标准)坐标系中的四个坐标 有没有办法改变它,让它输出28992个坐标呢?我猜“28992个坐标”指的是 在传单中使用“非标准”C

我在我的宣传单webmap中执行以下代码

map.getBounds().getWest() + "&y1=" + 
map.getBounds().getSouth() + "&x2=" + 
map.getBounds().getEast() + "&y2=" + 
map.getBounds().getNorth()
结果显示WGS84(标准)坐标系中的四个坐标

有没有办法改变它,让它输出28992个坐标呢?

我猜“28992个坐标”指的是

在传单中使用“非标准”CRS的标准方法是利用。这个答案假设您已经这样做了

因此
L.Map
getBounds()
方法始终返回一个
L.LatLngBounds
实例,该实例引用未投影的WGS84坐标。但是,我们可以在地图的显示CRS中使用投影坐标将a
L.LatLng
转换为a
L.Point
;e、 g

var map = L.map('containerId`, { crs: crsForEpsg28992 });

var foo = map.options.crs.project(L.latLng([60.3,21.1]));
var qux = map.options.crs.project(map.getCenter());
由于地图投影的工作方式(它们旋转和弯曲坐标空间),以及如何实现,因此无法将边界框投影到边界框中。(在大多数情况下,边界框的投影将是一个曲线多边形!)。来自的此图像说明了问题:

但是,我们可以进行近似处理:投影边界框的四个角,例如:

var mapBounds = map.getBounds();
var crs = map.options.crs;
var nw = crs.project(mapBounds.getNorthWest());   
var ne = crs.project(mapBounds.getNorthEast());
var sw = crs.project(mapBounds.getSouthWest());
var se = crs.project(mapBounds.getSouthEast());
我们甚至可以根据这些投影坐标创建一个
L.Bounds
(但不是a
L.latlngbunds
!);这将是指定CRS中包含所有角点的bbox,例如:

var bbox = L.bounds([nw, ne, sw, se]);
这并不完美,但对于大多数用例来说,这种近似值应该足够了

另请参见(基于Proj4传单中的一个示例),这将进一步说明这个问题