116 lines
2.4 KiB
JavaScript
116 lines
2.4 KiB
JavaScript
import Feature from '../../../src/ol/Feature.js';
|
|
import Point from '../../../src/ol/geom/Point.js';
|
|
import Map from '../../../src/ol/Map.js';
|
|
import View from '../../../src/ol/View.js';
|
|
import VectorLayer from '../../../src/ol/layer/Vector.js';
|
|
import VectorSource from '../../../src/ol/source/Vector.js';
|
|
import Fill from '../../../src/ol/style/Fill.js';
|
|
import RegularShape from '../../../src/ol/style/RegularShape.js';
|
|
import Style from '../../../src/ol/style/Style.js';
|
|
import Stroke from '../../../src/ol/style/Stroke.js';
|
|
|
|
const vectorSource = new VectorSource();
|
|
function createFeatures(stroke, fill, offSet = [0, 0]) {
|
|
let feature;
|
|
feature = new Feature({
|
|
geometry: new Point([offSet[0], offSet[1]])
|
|
});
|
|
// square with offset
|
|
feature.setStyle(new Style({
|
|
image: new RegularShape({
|
|
fill: fill,
|
|
stroke: stroke,
|
|
points: 4,
|
|
radius: 10,
|
|
angle: Math.PI / 4,
|
|
displacement: [-15, 15]
|
|
})
|
|
}));
|
|
vectorSource.addFeature(feature);
|
|
|
|
feature = new Feature({
|
|
geometry: new Point([8 + offSet[0], 15 + offSet[1]])
|
|
});
|
|
// triangle
|
|
feature.setStyle(new Style({
|
|
image: new RegularShape({
|
|
fill: fill,
|
|
stroke: stroke,
|
|
points: 3,
|
|
radius: 10,
|
|
rotation: Math.PI / 4,
|
|
angle: 0
|
|
})
|
|
}));
|
|
vectorSource.addFeature(feature);
|
|
|
|
feature = new Feature({
|
|
geometry: new Point([-10 + offSet[0], -8 + offSet[1]])
|
|
});
|
|
// star
|
|
feature.setStyle(new Style({
|
|
image: new RegularShape({
|
|
fill: fill,
|
|
stroke: stroke,
|
|
points: 5,
|
|
radius: 10,
|
|
radius2: 4,
|
|
angle: 0
|
|
})
|
|
}));
|
|
vectorSource.addFeature(feature);
|
|
|
|
feature = new Feature({
|
|
geometry: new Point([12 + offSet[0], -8 + offSet[1]])
|
|
});
|
|
// cross
|
|
feature.setStyle(new Style({
|
|
image: new RegularShape({
|
|
fill: fill,
|
|
stroke: stroke,
|
|
points: 4,
|
|
radius: 10,
|
|
radius2: 0,
|
|
angle: 0
|
|
})
|
|
}));
|
|
vectorSource.addFeature(feature);
|
|
}
|
|
|
|
createFeatures(
|
|
new Stroke({width: 2}),
|
|
new Fill({color: 'red'})
|
|
);
|
|
createFeatures(
|
|
new Stroke({
|
|
lineDash: [10, 5]
|
|
}),
|
|
null,
|
|
[50, 50]
|
|
);
|
|
createFeatures(
|
|
new Stroke({
|
|
lineDash: [10, 5],
|
|
lineDashOffset: 5
|
|
}),
|
|
null,
|
|
[-50, -50]
|
|
);
|
|
|
|
createFeatures(new Stroke(), new Fill(), [50, -50]);
|
|
|
|
const vectorLayer = new VectorLayer({
|
|
source: vectorSource
|
|
});
|
|
|
|
new Map({
|
|
target: 'map',
|
|
layers: [vectorLayer],
|
|
view: new View({
|
|
center: [0, 0],
|
|
resolution: 1
|
|
})
|
|
});
|
|
|
|
render();
|