繁体   English   中英

OpenLayers以像素为特色

[英]OpenLayers features in 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,从左上到下从左到右

var extent = [0,0,650,366]; - >这需要与图像相同,获得高度和宽度并进入那里。

然后在我的情况下,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。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM