<?xml version="1.0" encoding="utf-8"?>
<ExceptionReport version="1.0.0" xmlns="http://www.opengis.net/ows/2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" schemaLocation="http://www.opengis.net/ows/2.0 owsExceptionReport.xsd">
<Exception code="InternalMapServerError" locator="BBOX">
<ExceptionText>BBOX is invalid or out of range</ExceptionText>
</Exception>
</ExceptionReport>
Что можно сделать? Надо явно при создании карты задавать ее рамку или это можно обойти? Но для карты на которую я нанес один объект я ничего про рамку карты не указывал - ни в паспорте, ни в коде.
Алексей написал: Что можно сделать? Надо явно при создании карты задавать ее рамку или это можно обойти? Но для карты на которую я нанес один объект я ничего про рамку карты не указывал - ни в паспорте, ни в коде.
При добавлении объектов рамка листа автоматически пересчитывается. Либо сразу карту ограничивать рамкой (в ГИС Панорама Мини).
Алексей написал: Что можно сделать? Надо явно при создании карты задавать ее рамку или это можно обойти? Но для карты на которую я нанес один объект я ничего про рамку карты не указывал - ни в паспорте, ни в коде.
При добавлении объектов рамка листа автоматически пересчитывается. Либо сразу карту ограничивать рамкой (в ГИС Панорама Мини).
Я впоследствии добавляю объекты на карты динамически - при помощи mapapi. Если открыть в ГИС Оператор данную карту - то проблемы нет, если через веб - то ситуация не меняется даже после добавления объектов.
Хотел уточнить. Карта добавлена в виртуальную папку ГИС Сервера или сервиса? Редактирование карты идёт через ГИС Сервер или с помощью транзакций через сервис? Запрос "http://localhost/GISWebServiceSE/service.php?RESTMETHOD=GetBound&Lay232047%23ALIAS%23Layers_4f62c948-1a86-11ea-9cd2-b271382053e7_real_real.sit" идёт уже после добавления объектов на карту? Уточните версию сервиса.
Если речь о GIS WebToolKit SE или GIS WebServer SE, то в свойствах слоя, на котором создаются объекты, не надо изначально указывать габариты. Если необходимо получить габариты программно, то вот пример запроса габаритов и обработки ответа:
Код
/**
* Загрузить габариты слоя
* @method loadBounds
* @param event {Object} событие `showlayerextent`
*/
loadBounds: function (event) {
var maplay = this.map.tiles.getLayerByIdService(event.idlayer);
if (!maplay) { return; }
var url = maplay.serverUrl ? maplay.serverUrl : maplay.server;
var server = url.split('?'),
wfs = new WfsQueries(server[0], this.map);
wfs.context = this;
//wfs.onDataLoad = function (data) { wfs.context.onloadBounds(data) };
wfs.onDataLoad = this.onloadBounds.bind(this);
wfs.sendRequest ({'restmethod' : 'GetBound', 'layer_id' : event.idlayer});
},
/**
* Обработать загрузку габаритов слоя (запроса GetBound).
*
* @method onloadBounds
* @param response {string} строка ответа, габариты слоя, градусы
*/
onloadBounds: function (response) {
// Проверить существование подстроки "Format"
var pos = -1;
if (response) {
pos = response.indexOf('Format');
}
if (pos === -1) {
console.log("GWTK.WfsRestRequests.onloadBounds. " + w2utils.lang("Failed to get data"));
if (response) {
console.log(response);
}
return;
}
var val = response.substr(0, pos),
coord = val.split(' ');
if (coord.length !== 4) {
return;
}
if (typeof this.map.options.maxBounds == 'undefined') {
this.map.showMapExtent(parseFloat(coord[1]), parseFloat(coord[0]), parseFloat(coord[3]), parseFloat(coord[2]));
return;
}
var min = new GWTK.LatLng(parseFloat(coord[1]), parseFloat(coord[0])),
max = new GWTK.LatLng(parseFloat(coord[3]), parseFloat(coord[2])),
bounds = GWTK.latLngBounds(min, max);
if (!this.map.options.maxBounds.intersects(bounds)) {
console.log('GWTK.ViewEntireLayerControl. ' + 'Layer bounds are out of map max bounds');
w2alert('Layer bounds are out of map max bounds' + '!');
return;
}
// обрезаем габариты слоя по maxBounds карты
var max_sw = this.map.options.maxBounds.getSouthWest(),
max_ne = this.map.options.maxBounds.getNorthEast();
if (min.lat < max_sw.lat) {
min.lat = max_sw.lat;
}
if (max.lat > max_ne.lat) {
max.lat = max_ne.lat;
}
if (min.lng < max_sw.lng) {
min.lng = max_sw.lng;
}
if (max.lng > max_ne.lng) {
max.lng = max_ne.lng;
}
this.map.showMapExtent(min.lat, min.lng, max.lat, max.lng);
}