我在之前由Zoomify传递的图像上使用Openlayers,因为它很大(2 2gb +)。除了map之外,我还使用了一组附加了javascript函数的多边形。我通过"sourceFeatures.addFeature (featurePolyXY)“函数使用它们;图像比用于创建多边形的图像略小。由于多边形是从一个包含大量值的大型xml文件中生成的,因此我们的想法是放大地图,使其与多边形保持一致,而不是修改多边形的坐标。
我想我可以通过ol.source.Zoomify的" size“参数来改变地图的大小。虽然尺寸乘以2很好地工作,但并不总是计算出标准尺寸的其他中间量。看到这是我第一次使用openlayer,我确信解决方案就在我的眼皮底下,我没有注意到它……下面是我使用的代码:
//these values are taken from the ImageProperties.xml file created by
//zoomify
var imgWidth = 33165;
var imgHeight = 33165;
var url = 'imageFolder/';
var crossOrigin = 'anonymous';
var imgCenter = [imgWidth / 2, - imgHeight / 2];
var proj = new ol.proj.Projection({
code: 'ZOOMIFY',
units: 'pixels',
extent: [0, 0, imgWidth, imgHeight]
});
var source = new ol.source.Zoomify({
url: url,
//i think here is the parameter i would like to change
size: [imgWidth, imgHeight],
crossOrigin: crossOrigin
});
//MAP
var map = new ol.Map({
layers: [
new ol.layer. Tile({
source: source
}),
layerFeatures
],
target: 'map',
view: new ol.View({
projection: proj,
center: imgCenter,
zoom: 2,
extent: [0, -imgHeight, imgWidth, 0]
})
});关于参数: size: imgWidth,imgHeight
我尝试输入以下值size: 33165,33165 =>图像根据原始大小显示size: 66330,66330 =>正确图像加倍大小size: imgWidth*2,imgHeight*2 =>正确图像加倍大小size: imgWidth *5,imgHeight*5 =>正确图像大小为*5 size: 49000,49000 =>图像根据原始大小显示错误
控制台中未给出任何错误。
是否有可能放大图像大小,而不是双倍或倍数,而是中间方式,例如* 1.3?
发布于 2019-05-22 18:07:35
我用另一个解决方案解决了这个问题,一个真正的变通。我没有改变贴图的大小,只需将其加倍/四倍,依此类推,我依次修改了多边形的坐标:对于每个坐标值,我添加了一个乘数(以管理多边形的大小)和两个参数,以添加到垂直和水平坐标以管理位移。因此,例如来自:
var featurePoly0162 = new ol.Feature({
geometry: new ol.geom.Polygon([
[
[5636,-12903],
[5741,-12918],
[5753,-12988],
[5683,-12996],
[5633,-12949]
]至:
var multi = 1.3;
var minX = 1000;
var minY = 500;
var featurePoly0162 = new ol.Feature({
geometry: new ol.geom.Polygon([
[
[5636*multi - minX,-12903*multi - minY],
[5741*multi - minX,-12918*multi - minY],
[5753*multi - minX,-12988*multi - minY],
[5683*multi - minX,-12996*multi - minY],
[5633*multi - minX,-12949*multi - minY]
]这样,我不仅可以修改面的大小,而且只需修改3个值,就可以在地图上正确地定位它们
https://stackoverflow.com/questions/56165249
复制相似问题