0

我的默认地图在 EPSG: 5179 坐标系中,并且我正在使用 tileurlfunction 重新定义。

视图投影也设置为 5179。

将 Geoserver WMS 图层投影到 EPSG:4326 或 EPSG:3857 根据要求,它将覆盖在我的底图上。

但是如果我将投影修改为 EPSG: 5179 并覆盖 tilegrid 值 tileurlfunction,它不会正常覆盖。

如果您查看 ol v6.0.0.md,

新的内部瓷砖坐标,

好像是部分修改了tileUrlFunction导致的问题。

如果 tilegrid 不使用左上角并应用左下角,如果您能告诉我如何进行 WMS 图层服务,将不胜感激。

  • 我的baselayer&tileurlfunction
tilegrid
    origin: bottom-left,
    resolutions,
    extent

tileurlfunction
    return (
          (tileCoord) => {
            if (!tileCoord) {
              return undefined;
            } else {
              return template..replace(zRegEx, tileCoord[0].toString())
                .replace(xRegEx, tileCoord[1].toString())
                .replace(yRegEx, (-tileCoord[2] - 1).toString());
            }
          }
    );
  • 地理服务器 wmslayer
    const tileGrid = new TileGrid({
        origin: [extent[0], extent[1]],
        resolutions,
      extent
    })

    const wmsSource = new TileWMS({
        url: 'http://domain/geoserver/wms',
        params: { LAYERS: 'test:ecl_sw_p', TILED: true },
        projection: 'EPSG:5179'
        tileGrid
      })
4

1 回答 1

0

我解决了。

proj4js EPSG:5181
+axis=enu
                 =>
+axis=neu

用上面的方法改变左上角。

// ol/source/TileWMS.js
if (this.v13_ && axisOrientation.substr(0, 2) == 'ne') {
      let tmp;
      tmp = tileExtent[0];
      bbox[0] = tileExtent[1];
      bbox[1] = tmp;
      tmp = tileExtent[2];
      bbox[2] = tileExtent[3];
      bbox[3] = tmp;
}
于 2020-01-13T00:32:35.827 回答