Openlayers 如何修复带有WMTS错误地图覆盖的EPSG:4326

Openlayers 如何修复带有WMTS错误地图覆盖的EPSG:4326,openlayers,Openlayers,尽管设置了投影,但贴图还是倾斜的。我尝试了openlayers 5文档中的示例,但效果很好,我不知道我做错了什么 initializeMap() { const projection = getProjection("EPSG:4326"); const projectionExtent = projection.getExtent(); let size = getWidth(projectionExtent) / 256; let resolutions =

尽管设置了投影,但贴图还是倾斜的。我尝试了openlayers 5文档中的示例,但效果很好,我不知道我做错了什么

initializeMap() {
    const projection = getProjection("EPSG:4326");
    const projectionExtent = projection.getExtent();
    let size = getWidth(projectionExtent) / 256;
    let resolutions = new Array(14);
    const matrixIds = new Array(14);

    for (let z = 0; z < 14; ++z) {
      resolutions[z] = size / Math.pow(2, z);
      matrixIds[z] = z;
    }

    this.map = new Map({
      layers: [
        new TileLayer({
          source: new OSM()
        }),
        new TileLayer({
          crossOrigin: true,
          source: new WMTS({
            url:
            "http://mapy.geoportal.gov.pl/wss/service/WMTS/guest/wmts/ORTO",
            matrixSet: ["EPSG:4326"],
            projection: projection,
            tileGrid: new WMTSTileGrid({
              origin: getTopLeft(projectionExtent),
              resolutions: resolutions,
              matrixIds: matrixIds
            })
          })
        })
      ],
      target: "map",
      view: new View({
        center: fromLonLat([19.4569911, 51.7687323]),
        zoom: 4
      })
    });
  }
initializeMap(){
const projection=getProjection(“EPSG:4326”);
const projectionExtent=projection.getExtent();
设size=getWidth(projectionExtent)/256;
让分辨率=新数组(14);
const matrixIds=新数组(14);
对于(设z=0;z<14;++z){
分辨率[z]=尺寸/数学功率(2,z);
基质氧化物[z]=z;
}
this.map=新地图({
图层:[
新瓦工({
资料来源:新OSM()
}),
新瓦工({
交叉起源:对,
资料来源:新WMT({
网址:
"http://mapy.geoportal.gov.pl/wss/service/WMTS/guest/wmts/ORTO",
矩阵集:[“EPSG:4326”],
投影:投影,
tileGrid:新的WMTSTileGrid({
来源:gettoplft(projectionExtent),
决议:决议,
matrixIds:matrixIds
})
})
})
],
目标:“地图”,
视图:新视图({
中心:fromLonLat([19.4569911,51.7687323]),
缩放:4
})
});
}
这是有问题的屏幕


我已经检查了该服务的GetCapabilities,tilegrid不是基于全局投影范围(而是使用[13.8,48.8,24.4,55],并且tile大小为512)。虽然您可以更新代码以反映让OpenLayers解析GetCapabilities以创建源选项更容易:

var parser=new ol.format.WMTSCapabilities();
var url='1〕https://mapy.geoportal.gov.pl/wss/service/WMTS/guest/wmts/ORTO?SERVICE=WMTS&REQUEST=GetCapabilities';
获取(url)。然后(函数(响应){
返回response.text();
}).然后(函数(文本){
var result=parser.read(文本);
var options=ol.source.WMTS.optionsFromCapabilities(结果{
图层:“ORTOFOTOMAPA”,
matrixSet:'EPSG:4326',
交叉起源:对,
});
//console.log(选项);
this.map=新ol.map({
图层:[
新ol.layer.Tile({
来源:new ol.source.OSM()
}),
新ol.layer.Tile({
来源:新的ol.source.WMTS(选项),
不透明度:0.5
})
],
目标:“地图”,
视图:新ol.view({
中心:Lonlat的其他项目([19.4569911,51.7687323]),
缩放:4
})
});
});
html,body,.map{
保证金:0;
填充:0;
宽度:100%;
身高:100%;
}