Javascript 在错误位置打开图层WMT

Javascript 在错误位置打开图层WMT,javascript,openlayers,wms,Javascript,Openlayers,Wms,我试图在现有的开放街道地图图层上,使用开放图层显示WMTS图层。 WMTS图层已加载,但它位于错误的位置(比例也已关闭) 我从官方示例开始,对其进行了修改,以显示新的WMT,但无法正确加载。按照我的理解,对于不同的坐标系,应该有多组图像,矩阵集在这些图像之间切换。在GetCapabilities xml中列出了epsg:4326(如果我没有提供它,它根本不会加载),因此它应该是可用的。我的原始OSM地图也应该是epsg:4326。我不明白为什么地图不匹配,我真的很感谢你的帮助 这是我迄今为止的代

我试图在现有的开放街道地图图层上,使用开放图层显示WMTS图层。 WMTS图层已加载,但它位于错误的位置(比例也已关闭)

我从官方示例开始,对其进行了修改,以显示新的WMT,但无法正确加载。按照我的理解,对于不同的坐标系,应该有多组图像,矩阵集在这些图像之间切换。在GetCapabilities xml中列出了epsg:4326(如果我没有提供它,它根本不会加载),因此它应该是可用的。我的原始OSM地图也应该是epsg:4326。我不明白为什么地图不匹配,我真的很感谢你的帮助

这是我迄今为止的代码:

<div id="map" class="map" style="height: 500px; width:100%"></div>
<script src="https://cdn.jsdelivr.net/gh/openlayers/openlayers.github.io@master/en/v6.4.3/build/ol.js">
<script type="text/javascript">

var projection = ol.proj.get('EPSG:4326');
var projectionExtent = projection.getExtent();
var size = ol.extent.getWidth(projectionExtent) / 256;
var resolutions = new Array(14);
var matrixIds = new Array(14);
for (var z = 0; z < 14; ++z) 
{
  // generate resolutions and matrixIds arrays for this WMTS
  resolutions[z] = size / Math.pow(2, z);
  matrixIds[z] = z;
}

var map = new ol.Map(
{
    projection: 'EPSG:4326',
    target: 'map',
    layers: [
        new ol.layer.Tile(
        {
            source: new ol.source.OSM(),
        }),
        new ol.layer.Tile(
        {
            opacity: 0.7,
            source: new ol.source.WMTS(
            {
                url:
                  'https://service.pdok.nl/hwh/luchtfotorgb/wmts/v1_0', //?&request=GetTile&service=wmts
                layer: 'Actueel_ortho25',
                matrixSet: 'EPSG:4326',
                format: 'image/png',
                projection: 'EPSG:4326',
                tileGrid: new ol.tilegrid.WMTS(
                {
                    origin: ol.extent.getTopLeft(projectionExtent),
                    resolutions: resolutions,
                    matrixIds: matrixIds,
                }),
                style: 'default',
                wrapX: true,
            }),
        })
    ],
    view: new ol.View(
    {
        center: ol.proj.fromLonLat([5, 52]),
        zoom: 4
    })
});
</script>

var projection=ol.proj.get('EPSG:4326');
var projectionExtent=projection.getExtent();
var size=ol.extent.getWidth(projectionExtent)/256;
var分辨率=新阵列(14);
var matrixIds=新数组(14);
对于(变量z=0;z<14;++z)
{
//生成此WMTS的分辨率和矩阵ID数组
分辨率[z]=尺寸/数学功率(2,z);
基质氧化物[z]=z;
}
var map=新ol.map(
{
投影:‘EPSG:4326’,
目标:“地图”,
图层:[
新ol.layer.Tile(
{
source:new ol.source.OSM(),
}),
新ol.layer.Tile(
{
不透明度:0.7,
来源:新ol.source.WMTS(
{
网址:
'https://service.pdok.nl/hwh/luchtfotorgb/wmts/v1_0“,/?&request=GetTile&service=wmts
图层:“Actueel_ortho25”,
matrixSet:'EPSG:4326',
格式:'image/png',
投影:‘EPSG:4326’,
tileGrid:新的ol.tileGrid.WMTS(
{
来源:ol.extent.getTopLeft(projectionExtent),
决议:决议,
matrixIds:matrixIds,
}),
样式:“默认”,
wrapX:是的,
}),
})
],
视图:新ol.view(
{
中心:Lonlat的其他项目([5,52]),
缩放:4
})
});

如果您检查功能,您可以看到EPSG:4326矩阵不是从全局EPSG:4326投影的左上角开始的(该投影位于
90,-180

53.637608 3.013754
因此,它使用的是自定义的平铺网格。最简单的解决方案是让OpenLayers解析功能并设置所需的选项


OSM测试
html,body,.map{
保证金:0;
填充:0;
宽度:100%;
身高:100%;
}

这完全解决了我的问题,非常感谢!!
<TopLeftCorner>53.637608 3.013754</TopLeftCorner>