0

我得到了四个不同的坐标,它们在 openlayers 地图中形成了一个正方形。但我想知道是否有可能不是打破正方形,而是抓住一个角并调整正方形的大小(使更大/更小)?

我的坐标如下:

var x_1 = 28.0244307;
var y_1 = -25.8635238;

var x_2 = 28.0244307;
var y_2 = -25.8835238;

var x_3 = 28.0444307;
var y_3 = -25.8835238;

var x_4 = 28.0444307;
var y_4 = -25.8635238;

然后是调整它大小的代码,但它打破了方形:

var coords = [
                [x_1, y_1],
                [x_2, y_2],
                [x_3, y_3],
                [x_4, y_4],
                [x_1, y_1]
            ];

            var polygon = new ol.geom.Polygon([coords]);

            var feature = new ol.Feature(polygon);

            polygon.transform('EPSG:4326', 'EPSG:3857');

            var vectorSource = this.vectorSource;
            vectorSource.addFeature(feature);

            var select = new ol.interaction.Select();

            var modify = new ol.interaction.Modify({
                    features: select.getFeatures(),
                });

            var snap = new ol.interaction.Snap({
                source: vectorSource,
            });

            this.map.addInteraction(select);
            this.map.addInteraction(modify);
            this.map.addInteraction(snap);
4

1 回答 1

1

只需使用您的 4 个点创建一个多边形,然后在您的样式中使用GeometryFunction来仅显示这些点。
然后使用ol-ext ol/interaction/Transform来修改形状。

于 2020-11-22T09:03:18.210 回答