Files
openlayers/test/rendering/cases/icon-symbol-svg/main.js
2021-04-28 09:23:33 -07:00

82 lines
1.7 KiB
JavaScript

import Feature from '../../../../src/ol/Feature.js';
import Map from '../../../../src/ol/Map.js';
import Point from '../../../../src/ol/geom/Point.js';
import View from '../../../../src/ol/View.js';
import {Icon, Style} from '../../../../src/ol/style.js';
import {
Tile as TileLayer,
Vector as VectorLayer,
} from '../../../../src/ol/layer.js';
import {Vector as VectorSource, XYZ} from '../../../../src/ol/source.js';
import {fromLonLat} from '../../../../src/ol/proj.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();