以下代码使用EPSG:3857投影(以米为单位提供坐标信息),并查看下面包含的屏幕截图,可以看出世界被IDL包裹,并且在图像中显示并选择了向量DragBox。也被重复。不幸的是EPSG:3857不符合DoD WGS 84标准,因此无法使用(非WGS 84空间参考系统可能会导致高达40,000米的地理位置/地理坐标误差),所以我无法使用它。
baseLayer = new ol.layer.Tile({
source: new ol.source.TileWMS({
url: selectedUrl,
projection: 'EPSG:3857',
serverType: 'geoserver',
params:{'LAYERS':"world",
'TILED':true,
'wrapDateLine':true,
'VERSION': '1.3.0'},
noWrap: false,
wrapX: true
})
});
var mousePositionControl = new ol.control.MousePosition({
coordinateFormat: function(coordinate) {
var lon = coordinate[0];
var lat = coordinate[1];
lon = lon % 360;
if (lon > 180) {
lon = lon - 360;
} else if (lon < -180) {
lon = 360 + lon;
}
modifiedCoordinate = [lon, lat]
return ol.coordinate.format(modifiedCoordinate, "{x}, {y}", 4);
},
projection: 'EPSG:4326',
className: 'custom-mouse-position',
target: document.getElementById('mouse-position'),
undefinedHTML: ' '
});
// Define map
map = new ol.Map({
controls: ol.control.defaults({
attributionOptions: {
collapsible: false
}
// Add the cursor control to the map
}).extend([mousePositionControl]),
target: 'map',
layers: [baseLayer],
view: new ol.View({
center: [0, 0],
projection: 'EPSG:3857',
zoom: 2
})
});
EPSG:3395符合DoD WGS 84,因此我需要将其用作投影。如果您在两种情况下都注意到,我也使用EPSG:4326,它以LAT / LON提供坐标信息,用于显示鼠标光标位置和所需AOI矩形的最终坐标。但是,在包含的EPSG:3395投影图形中,您可以看到仅显示地图的单个实例,与所选DragBox AOI矩形的单个实例一样。下面的代码与以下两个投影相同:定义线,一条在基层对象中,一条在地图对象中。
baseLayer = new ol.layer.Tile({
source: new ol.source.TileWMS({
url: selectedUrl,
projection: 'EPSG:3395',
serverType: 'geoserver',
params:{'LAYERS':"world",
'TILED':true,
'wrapDateLine':true,
'VERSION': '1.3.0'},
noWrap: false,
wrapX: true
})
});
var mousePositionControl = new ol.control.MousePosition({
coordinateFormat: function(coordinate) {
var lon = coordinate[0];
var lat = coordinate[1];
lon = lon % 360;
if (lon > 180) {
lon = lon - 360;
} else if (lon < -180) {
lon = 360 + lon;
}
modifiedCoordinate = [lon, lat]
return ol.coordinate.format(modifiedCoordinate, "{x}, {y}", 4);
},
projection: 'EPSG:4326',
className: 'custom-mouse-position',
target: document.getElementById('mouse-position'),
undefinedHTML: ' '
});
// Define map
map = new ol.Map({
controls: ol.control.defaults({
attributionOptions: {
collapsible: false
}
// Add the cursor control to the map
}).extend([mousePositionControl]),
target: 'map',
layers: [baseLayer],
view: new ol.View({
center: [0, 0],
projection: 'EPSG:3395',
zoom: 2
})
});
在EPSG:3857投影的情况下,滚动地图时,您会看到OpenLayers向GeoServer请求其他地图图块。但是,在EPSG:3395的情况下,没有这样的额外请求出现,因此问题似乎深藏在OpenLayers中,但是对于它们为何工作方式不同却没有任何意义。
我的问题是这个。有谁知道为什么EPSG:3395投影在配置为像上述代码的两个实例一样在IDL处换行时,不会产生换行的地图显示?