我有一个问题,我不太清楚要解决。
var deletedFeatures = [];
var nuevaRegionId = -1;
var featureID = -1;
var extent = [0, 0, 650, 366];
var projection = new ol.proj.Projection({
code: 'xkcd-image',
units: 'pixels',
extent: extent
});
var map = new ol.Map({
layers: [
new ol.layer.Image({
source: new ol.source.ImageStatic({
attributions: [
new ol.Attribution({
html: '<a href="http://www.somepage.com/">More</a>'
})
],
url: "<?php echo $img ?>",
projection: projection,
imageExtent: extent
})
})
],
target: 'map',
view: new ol.View({
projection: projection,
center: ol.extent.getCenter(extent),
zoom: 2,
minZoom: 1,
maxZoom: 4
})
});
问题是我从700px x 500px的图像中保存了功能
当我添加此功能时,它不会在图像的相应像素处绘制。
[[[432.275390625,268.188476562],[407.51953125,56.8115234375],[469.091796875,53.0029296875],[484.9609375,262.475585938],[432.275390625,268.188476562]]]
如果我手动绘制有不同的值。
有没有办法以像素而不是在openlayers指标中绘制要素?
保存功能:
var features = featureOverlay.getSource().getFeatures();
var format = new ol.format["GeoJSON"]();
data = format.writeFeatures(features);
我用var extent = [0,0,650,366]解决了我的问题;这必须与图像的宽度和高度相同,另一个问题是te轴,对我来说是从左到右的X,Y,从左上到下从左到右
答案 0 :(得分:0)
var extent = [0,0,650,366]; - &GT;这需要与图像相同,获得高度和宽度并进入那里。
然后在我的情况下,x,y coord我收到了从左上角(0,0)到OpenLayers的地方(0,0)左下角
例如: 如果图像是500x500,我收到的矩形坐标为:[0,0] [0,100],[100,100],[100,0] 对我来说OpenLayers中的正确坐标:[[0,0],[0,400],[0,400],[100,400],[0,0]] 对我来说Y是= 500-y = 400。