73 lines
1.5 KiB
JavaScript
73 lines
1.5 KiB
JavaScript
import Circle from '../../../src/ol/style/Circle.js';
|
|
import Feature from '../../../src/ol/Feature.js';
|
|
import Map from '../../../src/ol/Map.js';
|
|
import Point from '../../../src/ol/geom/Point.js';
|
|
import Stroke from '../../../src/ol/style/Stroke.js';
|
|
import Style from '../../../src/ol/style/Style.js';
|
|
import VectorLayer from '../../../src/ol/layer/Vector.js';
|
|
import VectorSource from '../../../src/ol/source/Vector.js';
|
|
import View from '../../../src/ol/View.js';
|
|
|
|
const ellipse = new Feature(new Point([-50, -50]));
|
|
|
|
ellipse.setStyle(
|
|
new Style({
|
|
image: new Circle({
|
|
radius: 30,
|
|
scale: [1, 0.5],
|
|
stroke: new Stroke({
|
|
color: '#00f',
|
|
width: 3,
|
|
}),
|
|
}),
|
|
})
|
|
);
|
|
|
|
const vectorSource = new VectorSource();
|
|
|
|
vectorSource.addFeatures([
|
|
new Feature({
|
|
geometry: new Point([-50, 50]),
|
|
radius: 10,
|
|
}),
|
|
new Feature({
|
|
geometry: new Point([50, -50]),
|
|
radius: 20,
|
|
}),
|
|
new Feature({
|
|
geometry: new Point([50, 50]),
|
|
radius: 30,
|
|
}),
|
|
ellipse,
|
|
]);
|
|
|
|
const style = new Style({
|
|
image: new Circle({
|
|
radius: 1,
|
|
stroke: new Stroke({
|
|
color: '#00f',
|
|
width: 3,
|
|
}),
|
|
}),
|
|
});
|
|
|
|
new Map({
|
|
pixelRatio: 2,
|
|
layers: [
|
|
new VectorLayer({
|
|
source: vectorSource,
|
|
style: function (feature) {
|
|
style.getImage().setRadius(feature.get('radius'));
|
|
return style;
|
|
},
|
|
}),
|
|
],
|
|
target: 'map',
|
|
view: new View({
|
|
center: [0, 0],
|
|
resolution: 1,
|
|
}),
|
|
});
|
|
|
|
render();
|