73 lines
1.6 KiB
JavaScript
73 lines
1.6 KiB
JavaScript
import Map from '../../../src/ol/Map.js';
|
|
import View from '../../../src/ol/View.js';
|
|
import {Vector as VectorLayer, Tile as TileLayer} from '../../../src/ol/layer.js';
|
|
import {Vector as VectorSource, XYZ} from '../../../src/ol/source.js';
|
|
import Point from '../../../src/ol/geom/Point.js';
|
|
import Feature from '../../../src/ol/Feature.js';
|
|
import {fromLonLat} from '../../../src/ol/proj.js';
|
|
import {Style, Icon} from '../../../src/ol/style.js';
|
|
|
|
const center = fromLonLat([8, 50]);
|
|
|
|
const vectorSource = new VectorSource();
|
|
let feature;
|
|
|
|
// scales svg correctly
|
|
feature = new Feature({
|
|
geometry: new Point(fromLonLat([3, 45]))
|
|
});
|
|
feature.setStyle(new Style({
|
|
image: new Icon({
|
|
src: '/data/me0.svg',
|
|
scale: 2
|
|
})
|
|
}));
|
|
vectorSource.addFeature(feature);
|
|
|
|
// uses offset correctly
|
|
feature = new Feature({
|
|
geometry: new Point(fromLonLat([3, 55]))
|
|
});
|
|
feature.setStyle(new Style({
|
|
image: new Icon({
|
|
src: '/data/me0.svg',
|
|
offset: [16, 0],
|
|
scale: 2
|
|
})
|
|
}));
|
|
vectorSource.addFeature(feature);
|
|
|
|
// uses offset correctly if it is larger than size
|
|
feature = new Feature({
|
|
geometry: new Point(fromLonLat([8, 55]))
|
|
});
|
|
feature.setStyle(new Style({
|
|
image: new Icon({
|
|
src: '/data/me0.svg',
|
|
offsetOrigin: 'bottom-left',
|
|
offset: [16, 0],
|
|
size: [64, 40]
|
|
})
|
|
}));
|
|
vectorSource.addFeature(feature);
|
|
|
|
new Map({
|
|
layers: [
|
|
new TileLayer({
|
|
source: new XYZ({
|
|
url: '/data/tiles/satellite/{z}/{x}/{y}.jpg'
|
|
})
|
|
}),
|
|
new VectorLayer({
|
|
source: vectorSource
|
|
})
|
|
],
|
|
target: 'map',
|
|
view: new View({
|
|
center: center,
|
|
zoom: 3
|
|
})
|
|
});
|
|
|
|
render();
|