Страница 1 из 1

OpenLayer WMTS

Добавлено: 13 ноя 2017, 18:48
MadHarper
Ну могу подключить в openLayer WMTS карту.

Код: Выделить всё

proj4.defs('EPSG:0', '+proj=tmerc +lat_0=0 +lon_0=30 +k=1 +x_0=95942.17 +y_0=-6552810 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.54,0.97,-0.12 +units=m +no_defs');

var proj202474 = ol.proj.get('EPSG:0');
proj202474.setExtent([55000, 55000, 145000, 135000]);


$.ajax({
    url: 'https://gis.toris.gov.spb.ru/arcgis1031/rest/services/BM_MSK_SOCIAL/MapServer/WMTS/1.0.0/WMTSCapabilities.xml',
    success: function (resp) {
        var capabilities = _parseCapabilities(resp);
        baseInit(capabilities);
    }
});

var _parseCapabilities = function (resp) {
    var parser = new ol.format.WMTSCapabilities();
    var result = parser.read(resp);

    return ol.source.WMTS.optionsFromCapabilities(result,
        {
            layer: 'BM_MSK_SOCIAL',
            projection: 'EPSG:0'
        }
    );
};
В консоли браузера вылетает ошибка:
Uncaught TypeError: Cannot read property 'Nc' of null на строке ol.source.WMTS.optionsFromCapabilitie(...

Что не так?

Re: OpenLayer WMTS

Добавлено: 13 ноя 2017, 21:01
Denis Rykov
В человекочитаемом варианте это "Cannot read property 'getCode' of null", просто OpenLayers не знает такую проекцию как EPSG:0. Там у вас в ответе указана проекция EPSG:202474, но и такой проекции OpenLayers не знает. Нужно взять proj4js и определить используемую проекцию.

Re: OpenLayer WMTS

Добавлено: 14 ноя 2017, 09:09
MadHarper
Большое спасибо за ответ!
А разве строчкой
proj4.defs('EPSG:0', '+proj=tmerc +lat_0=0 +lon_0=30 +k=1 +x_0=95942.17 +y_0=-6552810 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.54,0.97,-0.12 +units=m +no_defs');
я не определяю EPSG:0?

И я правильно подключаю proj4js?
через cdn: 'https://cdnjs.cloudflare.com/ajax/libs/ ... 4/proj4.js',

Re: OpenLayer WMTS

Добавлено: 14 ноя 2017, 10:32
MadHarper
Ура! Всё получилось! Большое спасибо за подсказку! :D

Re: OpenLayer WMTS

Добавлено: 14 ноя 2017, 11:21
Denis Rykov
Каким образом?

Re: OpenLayer WMTS

Добавлено: 15 ноя 2017, 09:12
MadHarper

Код: Выделить всё

proj4.defs('EPSG:202474', '+proj=tmerc +lat_0=0 +lon_0=30 +k=1 +x_0=95942.17 +y_0=-6552810 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.54,0.97,-0.12 +units=m +no_defs');

var proj202474 = ol.proj.get('EPSG:202474');
proj202474.setExtent([55000, 55000, 145000, 135000]);


$.ajax({
    url: 'https://gis.toris.gov.spb.ru/arcgis1031/rest/services/BM_MSK_SOCIAL/MapServer/WMTS/1.0.0/WMTSCapabilities.xml',
    success: function (resp) {
        var capabilities = _parseCapabilities(resp);
        //console.log(capabilities);
        baseInit(capabilities);
    }
});

var _parseCapabilities = function (resp) {
    var parser = new ol.format.WMTSCapabilities();
    var result = parser.read(resp);

    return ol.source.WMTS.optionsFromCapabilities(result,
        {
            layer: 'BM_MSK_SOCIAL',
            projection: 'EPSG:202474'
        }
    );
};