ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

javascript-WMTS和WMTSTileGrid导致“无法读取未定义的属性””

2019-12-10 21:37:08  阅读:516  来源: 互联网

标签:openlayers typeerror javascript openlayers-5


我基本上是在尝试在开放图层中获取地图,该图层的视图仅限于丹麦.我想使用EPSG:25832来完成此操作,因为我需要使用此投影的特定服务的一些叠加层.

我正在尝试创建WMTSTileGrid,并通过WMTS将其解析为TileLayer,在其中调用服务以获取图层.我正在使用ol@5.3.2.

我收到以下错误,并且我需要帮助弄清楚是什么原因引起的:

Uncaught TypeError: Cannot read property 'every' of undefined
    at isSorted (array.js:242)
    at WMTSTileGrid.TileGrid (TileGrid.js:70)
    at new WMTSTileGrid (WMTS.js:58)
    at Object.parcelRequire.index.js.ol/ol.css (index.js:83)
    at newRequire (mao.e31bb0bc.js:47)
    at mao.e31bb0bc.js:81
    at mao.e31bb0bc.js:120

这是代码,我已经尝试过发布尽可能少的数量,以便于阅读,如果您认为缺少了一些东西,请告诉我:

import { Map, View } from 'ol';
import TileLayer from 'ol/layer/Tile';
import WMTS from 'ol/tilegrid/WMTS';
import WMTSTileGrid from 'ol/tilegrid/WMTS';
import Group from 'ol/layer/Group.js';
import TileWMS from 'ol/source/TileWMS';
import proj4 from 'proj4/dist/proj4';
import { get as getProjection } from 'ol/proj';
import Projection from 'ol/proj/Projection.js';
import { getTopLeft } from 'ol/extent.js';
import { register } from 'ol/proj/proj4.js'; // ADDED THIS

var myServiceToken = '12345678';

// defining custom projection, because i want to use EPSG:25832 due to the service i'm calling
var projCode = 'EPSG:25832';
proj4.defs(projCode, "+proj=utm +zone=32 +ellps=GRS80 +units=m +no_defs");
register(proj4); // ADDED THIS

var myProjection = new Projection({
    code: 'EPSG:25832',
    units: 'm',
    extent: [120000, 5661139.2, 1378291.2, 6500000]
});

var projection = getProjection(myProjection);
var projectionExtent = projection.getExtent();
var myTileGrid = new WMTSTileGrid({
    origin: getTopLeft(projectionExtent),
    extent: [120000, 5661139.2, 1378291.2, 6500000],
    resolutions: [1638.4, 819.2, 409.6, 204.8, 102.4, 51.2, 25.6, 12.8, 6.4, 3.2, 1.6, 0.8, 0.4, 0.2],
    matrixIds: ['L00', 'L01', 'L02', 'L03', 'L04', 'L05', 'L06', 'L07', 'L08', 'L09', 'L10', 'L11', 'L12', 'L13'],
});


const map = new Map({
    target: 'map',
    layers: [
        new Group({
            'title': 'Base maps',
            layers: [
                new TileLayer({
                    opacity: 1.0,
                    title: 'Base',
                    type: 'base',
                    visible: true, // by default this layer is visible
                    source: new WMTS({
                        url: "https://services.someService.com/some_map?token=" + myServiceToken,
                        layer: "some_map",
                        matrixSet: "View1",
                        format: "image/jpeg",
                        projection: getProjection('EPSG:25832'), // ADDED THIS
                        tileGrid: myTileGrid,
                        style: 'default',
                        size: [256, 256]
                    })
                })
            ]
        })
    ],
    view: view
});```

解决方法:

您在导入中犯了一个错误:

import WMTS from 'ol/tilegrid/WMTS';

应该:

import WMTS from 'ol/source/WMTS';

标签:openlayers,typeerror,javascript,openlayers-5
来源: https://codeday.me/bug/20191210/2104327.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有