Я использую OL3 с картографическим сервером ... проблема в том, что MapServer, похоже, работает нормально, у меня есть файл .map, например, для "Состояния" ...
MAP
IMAGETYPE PNG24
CONFIG "PROJ_LIB" "C:/Program Files/MapServer/projlib/"
EXTENT -180 -90 180 90
SIZE 256 256
FONTSET "E:/RCIS/Web/MapServerDlls/content/fontset.txt"
IMAGECOLOR 255 255 255
TRANSPARENT ON
PROJECTION
AUTO
END
LAYER
GROUP "Base"
NAME "States"
TYPE POLYGON
STATUS ON
LABELCACHE ON
PROCESSING 'LABEL_NO_CLIP=1'
CONNECTIONTYPE PLUGIN
PLUGIN "msplugin_mssql2008.dll"
CONNECTION "server=stbisqlr3.dvcorp.rcis.com,5208;uid=Mapping01D;pwd=9GreenSnap#4D;Initial Catalog=NATIONALDB;Integrated Security=False"
DATA "shape(geography),ST_NAME_MC from NATIONALDB.sde.STATES USING INDEX STATES_SIDX USING UNIQUE STATES_ID USING SRID=4269"
LABELITEM "ST_NAME_MC"
CLASS
STYLE
OUTLINECOLOR 000 153 000
WIDTH 3
END
LABEL
COLOR 000 153 000
TYPE TRUETYPE
FONT Arial
SIZE 12
ANTIALIAS FALSE
POSITION AUTO
PARTIALS FALSE
MINDISTANCE 2000
MINSCALEDENOM 20.00
END
END
PROJECTION
AUTO
END
END
END
И вот так я строю свою карту в OL3…
control.map = new ol.Map({
target: 'map',
renderer: 'canvas',
layers: [],
view: new ol.View({
projection: 'EPSG:4326',
center: [0, 0],
zoom: 12
})
});
Создайте векторный слой, который определяет экстент, создает вид и показывает векторные объекты… что работает !!
vectorObjs.promise.then(function () {
//Create empty extent
var extent = ol.extent.createEmpty();
//Loop through vector layers to add them to map and determine extent
var totalExtent = ol.extent;
angular.forEach(webMapValues.vectorFieldLayer, function (Field, key) {
control.map.addLayer(Field);
extent = Field.getSource().getExtent();
totalExtent = ol.extent.extend(extent, totalExtent);
})
control.map.getView().fit(totalExtent, control.map.getSize());
var view = new ol.View({
center: control.map.getView().getCenter(),
zoom: 8,
minZoom: 1,
maxZoom: 19
});
control.map.view = view;
Затем я пытаюсь добавить слой состояний на карту, и все вроде работает, но я не вижу плиток состояния?
var States = new ol.layer.Tile({
name: 'States',
extent: totalExtent,
source: new ol.source.TileWMS({
url: 'http://dvfmweb2:80/mapserver/mapserv.exe?map=E:/RCIS/Web/Mapfiles/MappingBase.map&',
params: { 'LAYERS': 'States', 'BBOX': totalExtent, 'TILED': true }
})
});
control.map.addLayer(States);
Когда я выполняю вызов, я вижу несколько строк в инструментах разработчика Chrome, указывающих плитки состояния, т.е.
Когда я возвращаю плитки обратно в хром, это полная информация. 1. URL-адрес запроса:
http: // имя сервера /mapserver/mapserv.exe? map = E: /RCIS/Web/Mapfiles/MappingStates.map&&SERVICE=WMS&VERSION=1.3.0&REQUEST=GetMap&FORMAT=image%2Fpng&TRANSPARENT=true&LAYERS=States&BBOX=47.318115234375%258108C&BBOX=47.318115234375%252C08C08_05_05_04_05_05_05_05_05_05_05_05_05_05_05_05 256 & CRS = EPSG% 3A4326 & СТИЛИ
Метод запроса: ПОЛУЧИТЬ
Код состояния: 200 ОК
Дополнительная информация !!!
Когда я вставляю одну из ссылок с кодом возврата «200 Ok», я вижу ошибку, в которой говорится ...
<ServiceException code="InvalidSRS">
msWMSLoadGetMapParams(): WMS server error. Invalid CRS given : CRS must be valid for all requested layers.
</ServiceException>
Однако я вижу только белый цвет?
Любая помощь приветствуется, я слишком долго бился об этом !!
-Боб
SRID=4269
, в то время как ваша карта ol3 проецируется на4326
. Я не знаком с картографическим сервером, упомяните об этом на всякий случай - person pavlos   schedule 17.07.2016