OpenLayers以像素为特色

时间:2015-12-03 08:33:30

标签: javascript image openlayers-3 pixels

我有一个问题,我不太清楚要解决。

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,从左上到下从左到右

1 个答案:

答案 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。