Мне нужно отобразить несколько объектов на карте, используя OpenLayers.Каждая функция должна быть представлена 2 изображениями (2 иконки SVG).Один из этих значков должен быть привязан к координатам объектов, а второй должен быть сдвинут с фиксированным количеством пикселей.Дополнительная проблема состоит в том, что сдвинутый должен также вращаться, и центр вращения должен быть центром значка, а не центром объекта.В качестве примера могу сказать: есть значок транспортного средства, который всегда ориентирован на север, а есть другой, который показывает направление вращения.Направление всегда должно быть указано вверху автомобиля
Я пытался использовать различные смещения и якоря, но мне не удалось точно расположить второй значок
Код выполняется с помощьюExtJS, но я надеюсь, что это читабельно: поэтому я использую функцию для установки стиля для ImageVector:
me.imageVectorSource = new ol.source.ImageVector({
source: new ol.source.Vector({
features: me.features
}),
style: Ext.bind(me.pointStyleFunction,me)
});
И функция выглядит так:
pointStyleFunction: function(feature, resolution) {
var currentStyles =
[
new ol.style.Style({
//first icon
image: new ol.style.Icon({
src: 'resources/img/vehicle.test.svg',
scale: sc,
}),
//text shown below
text: new ol.style.Text({
text: textToShow,
scale:sc
fill: new ol.style.Fill({
color: 'yellow'
}),
offsetY: textOffset,
stroke: new ol.style.Stroke({
color: 'black',
width: 4
}),
})
}),
//second icon that should be rotated
var rpIconStyle = new ol.style.Style({
image: new ol.style.Icon({
src: 'resources/img/rp.svg',
scale: sc,
rotation: rot
}),
});
];
}
Теперь, если второй значок повернут, он вращается вокруг центра объекта, а не в центре самого объекта.Я думал о добавлении новой геометрии ко второму стилю (Точка), но в этом случае я не могу указать смещение (в пикселях) геометрии от центра исходного объекта.Я могу использовать только координаты, но понятия не имею, возможно ли преобразовать их в пиксели.Фактически, ожидаемое решение будет примерно таким, как в случае со свойством text стиля, где можно указать offsetX и offsetY.
Не могли бы вы предложить мне какое-нибудь решение?