我认为多边形与地图的相位不同,因为EPSG代码存在问题。实际上,与中心相比,右侧的多边形似乎“向右滑动”,而左侧的多边形似乎“向左滑动”
我都试图改变投影 还有geometry.transform()……但是我对OpenLayers的一点熟悉并没有帮助。 我也直接从StackOverflow找到并尝试了许多解决方案,但是即使我发现许多存在类似问题的解决方案,建议的解决方案似乎也不适合。
已添加了带有参数的多边形,可将其全部左右移动或更改其大小。
var imgWidth = 33165;
var imgHeight = 33165;
var url = 'picUrl/';
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,
size: [imgWidth, imgHeight],
crossOrigin: crossOrigin
});
地图:
var map = new ol.Map({
layers: [
new ol.layer.Tile({
source: source
}),
layerFeatures
],
target: 'map',
view: new ol.View({
projection: proj,
center: imgCenter,
zoom: 1,
extent: [0, -imgHeight, imgWidth, 0]
})
});
多边形
var multi = 0.867; //to modify the size
var minx = 100; //to adjust the left boundary
var miny = -230; //to adjust the right boundary
var featurePoly0001 = new ol.Feature({
geometry: new ol.geom.Polygon([
[
[17470*multi - minx, -5240*multi - miny ],
[17668*multi - minx, -5224*multi - miny ],
[17676*multi - minx, -5302*multi - miny ],
[17474*multi - minx, -5306*multi - miny ]
]
])
})
sourceFeatures = new ol.source.Vector(),
layerFeatures = new ol.layer.Vector({
source: sourceFeatures
});
最后将多边形添加到地图中:
sourceFeatures.addFeature(featurePoly0001);
看到在OpenLayers中默认使用的EPSG是3857,并且多边形直接绘制在图像上,然后我想象它与EPSG兼容:4326我想找到一种使多边形适合图像的方法。 矢量变换方法,直接应用于坐标的数学公式或更多方法,都将受到赞赏。