Leafletjs如何投影EPSG4326指向传单默认值

时间:2017-11-28 10:56:02

标签: leaflet

我正在使用此处的澳大利亚政府地图数据:Victoria, Australia locality data,它在EPSG4326投影中提供。

当我尝试将数据用于传单时,当然,由于地球的曲率,我的数据有点失真 - 所以我的数据在屏幕上没有正确显示,因为地图使用不同的投影我的数据。

我试图通过在Map选项和TileLayer中设置它来强制地图使用EPSG4326,如下所示:

var gisLayer = L.tileLayer(
  'http://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', {
    //subdomains: ['0', '1', '2', '3'],
    attribution: 'openstreetmap',
    reuseTiles: true,
    updateWhenIdle: false,
    crs: L.CRS.EPSG4326
});

var map = L.map('map', {
  center: [-28.5, 135.575],
  zoom: 4
  ,crs: L.CRS.EPSG4326
});

map.addLayer(gisLayer);

但是当我这样做时,地图不会显示。我不相信已经为此投影生成了地图图块。也就是说,docos here中有一条建议说它可能是可能的,但我无法做到这一点。 (我的配置是否错误?)

当我检索数据并将其放在地图上时,它似乎正在工作,但是当我得到地图边界以选择可见区域的数据时,它也显示出扭曲。所以我尝试手动将地图边界转换为EPSG4326,将其传递给数据库,如下所示:

var bounds = map.getBounds();
var coords4326_NE = L.Projection.SphericalMercator.unproject(bounds._northEast);
console.log(coords4326_NE);

但这破坏了代码。我传递了错误的结构,我也无法做到这一点。

当然,我也接受将从数据库返回的每个点转换为默认投影,我认为是EPSG3857。但我也是这样做的。

我提供了jsFiddle here,我一直在努力做到这一点。

有谁知道我怎么做到这一点?

0 个答案:

没有答案