有没有办法让我可以保留正方形但在 openlayers 中调整它的大小?
Is there a way so that I can keep the square but resize it in openlayers?
我得到了四个不同的坐标,它们在 openlayers 地图中形成了一个正方形。但我想知道是否有可能不破坏正方形,而是抓住其中一个角并调整正方形的大小(使 bigger/smaller)?
我的坐标如下:
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 个点创建一个多边形,然后在您的样式中使用 GeometryFunction 以仅显示这些点。
然后用ol-extol/interaction/Transform修改形状
我得到了四个不同的坐标,它们在 openlayers 地图中形成了一个正方形。但我想知道是否有可能不破坏正方形,而是抓住其中一个角并调整正方形的大小(使 bigger/smaller)?
我的坐标如下:
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 个点创建一个多边形,然后在您的样式中使用 GeometryFunction 以仅显示这些点。
然后用ol-extol/interaction/Transform修改形状