OpenLayer WMTS

Mapserver, GeoServer, MapGuide, Google и другое ПО для веб-картографии
Ответить
MadHarper
Новоприбывший
Сообщения: 4
Зарегистрирован: 13 ноя 2017, 18:42
Репутация: 0
Откуда: Спб

OpenLayer WMTS

Сообщение MadHarper » 13 ноя 2017, 18:48

Ну могу подключить в 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(...

Что не так?

Аватара пользователя
Denis Rykov
Гуру
Сообщения: 3325
Зарегистрирован: 11 апр 2008, 21:09
Статьи: 33
Проекты: 9
Репутация: 495
Ваше звание: Author
Контактная информация:

Re: OpenLayer WMTS

Сообщение Denis Rykov » 13 ноя 2017, 21:01

В человекочитаемом варианте это "Cannot read property 'getCode' of null", просто OpenLayers не знает такую проекцию как EPSG:0. Там у вас в ответе указана проекция EPSG:202474, но и такой проекции OpenLayers не знает. Нужно взять proj4js и определить используемую проекцию.
Spatial is now, more than ever, just another column- The Geometry Column.

MadHarper
Новоприбывший
Сообщения: 4
Зарегистрирован: 13 ноя 2017, 18:42
Репутация: 0
Откуда: Спб

Re: OpenLayer WMTS

Сообщение MadHarper » 14 ноя 2017, 09:09

Большое спасибо за ответ!
А разве строчкой
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',

MadHarper
Новоприбывший
Сообщения: 4
Зарегистрирован: 13 ноя 2017, 18:42
Репутация: 0
Откуда: Спб

Re: OpenLayer WMTS

Сообщение MadHarper » 14 ноя 2017, 10:32

Ура! Всё получилось! Большое спасибо за подсказку! :D

Аватара пользователя
Denis Rykov
Гуру
Сообщения: 3325
Зарегистрирован: 11 апр 2008, 21:09
Статьи: 33
Проекты: 9
Репутация: 495
Ваше звание: Author
Контактная информация:

Re: OpenLayer WMTS

Сообщение Denis Rykov » 14 ноя 2017, 11:21

Каким образом?
Spatial is now, more than ever, just another column- The Geometry Column.

MadHarper
Новоприбывший
Сообщения: 4
Зарегистрирован: 13 ноя 2017, 18:42
Репутация: 0
Откуда: Спб

Re: OpenLayer WMTS

Сообщение MadHarper » 15 ноя 2017, 09:12

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

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'
        }
    );
};

Ответить

Вернуться в «Веб-картография»