#gis #openlayers #raster #openlayers-6 #angular-openlayers
Вопрос:
- Я использую библиотеку открытых слоев 6 для отображения карт и событий.
- Моя базовая карта-это карта улиц
- Тогда мое приложение должно отображать растр изображения
- нарисуйте многоугольник, затем
- в пределах полигона (какое бы изображение ни было, нижняя часть полигона, которая должна отображать другую область растра, должна быть невидимой)
- Я пытался
const imageProjection = new Projection({
code: 'orto-image',
units: 'pixels',
extent: buffer(extent, 512)
});
const imgSource = new Static({
url: this.imgURL,
projection: imageProjection,
imageExtent: extent,
imageSize: [this.imageData.width, this.imageData.height],
imageLoadFunction : (image) => {
image.getImage().src = this.imgURL;
if (image.resolution === undefined) {
image.resolution = (image.extent[3] - image.extent[1]) / image.image_.height;
}
image.state = 2; // ImageState.LOADED;
image.unlistenImage_();
image.changed();
}
});
const imageLayer = new ImageLayer({
source: imgSource
});
imageLayer.set('name', `testing`);
imageLayer.set('type', 'IMAGE');
this.currentMap().addLayer(imageLayer);
- Над изображением, добавленным на карту.
- затем нарисуйте многоугольник на растровом изображении(на базовой карте)
const polygonFeature = new Feature(
new Polygon([arrayData])/* .transform('EPSG:4326', 'EPSG:3857') */);
const source = new VectorSource({
style: new Style({
fill: new Fill({
color: 'black'
})
})
});
source.addFeature(polygonFeature);
const layer = new VectorLayer({
source,
});
layer.set('name', 'polygonLayer');
this.currentMap().addLayer(layer);
- мой конечный результат: карта с базовой картой и растровым изображением и полигоном
- потребности за пределами полигона должны быть отключены или невидимы(например, обрезка или маска)..
- я не использую ol-ext
- предложите или помогите в этом.. заранее спасибо.. и спасите мои дни..
Комментарии:
1. Да, тот же метод, что и в openlayers.org/en/latest/examples/layer-clipping-vector.html будет работать со слоем изображения и с нарисованным векторным объектом codesandbox.io/s/reprojection-image-forked-73t9k?file=/main.js
2. @Майк, большое тебе спасибо..