Openlayers 如何更改圆的样式,使其内部具有类似大小的图标?

Openlayers 如何更改圆的样式,使其内部具有类似大小的图标?,openlayers,openlayers-3,openlayers-6,Openlayers,Openlayers 3,Openlayers 6,我有以下几点 我想改变圆圈的样式,使其具有相似大小的图标,它的外观应该是这样的,这里是绘制圆圈交互,具有匹配大小的图标(就像我想为第一个例子做的那样。您需要一个返回样式数组的样式函数。对于圆几何体,第二个样式是位于圆中心的图标,并按视图分辨率缩放到圆的半径(根据分辨率和图标的原始大小进行调整)。在图层选项中包括updateWhileAnimating,有助于在缩放时保持比例 html,body,.map{ 保证金:0; 填充:0; 宽度:100%; 身高:100%; } .地图{ 位置:绝对

我有以下几点


我想改变圆圈的样式,使其具有相似大小的图标,它的外观应该是这样的,这里是绘制圆圈交互,具有匹配大小的图标(就像我想为第一个例子做的那样。

您需要一个返回样式数组的样式函数。对于圆几何体,第二个样式是位于圆中心的图标,并按视图分辨率缩放到圆的半径(根据分辨率和图标的原始大小进行调整)。在图层选项中包括
updateWhileAnimating
,有助于在缩放时保持比例


html,body,.map{
保证金:0;
填充:0;
宽度:100%;
身高:100%;
}
.地图{
位置:绝对位置;
}
变量圆=新的几何圆([-2.59394,51.45271],0.001).transform('EPSG:4326','EPSG:3857');
var功能=新的ol.功能({
几何图形:圆
});
var style1=新的ol.style.style({
填充:新的ol.style.fill({
颜色:“rgba(0,255,0,0.3)”
}),
笔划:新的ol风格笔划({
颜色:'#7373',
宽度:2
})
});
var style2=新的ol.style.style({
图片:新ol.style.Icon({
src:'https://openlayers.org/en/latest/examples/data/icon.png'
})
});
var CONCESSIONLAYER=新ol.layer.Vector({
来源:新ol.source.Vector({
特色:[特色]
}),
样式:功能(特征、分辨率){
var styles=[style1];
如果(feature.getGeometry().getType()=='Circle'){
style2.setGeometry(新的ol.geom.Point(feature.getGeometry().getCenter());
style2.getImage().setScale(feature.getGeometry().getRadius()/(40*分辨率));
styles.push(style2);
}
返回样式;
},
updateWhileAnimating:true,
可见:正确
})
var map=新ol.map({
目标:“地图”,
图层:[
新ol.layer.Tile({
来源:new ol.source.OSM()
}),
充血层
],
视图:新ol.view({
中心:Lonlat的其他项目([-2.59394,51.45271]),
预测:‘EPSG:3857’,
缩放:14
})
});

@geocodezip我一定是错误地修改了它,我刚刚修复了它…它有一个绘制圆圈的交互,但不是显示圆圈,而是显示一个图标,与圆圈的大小成比例。您要更改的图标是什么?样式化的圆圈?@geocodezip我想更改第一个示例的样式,以便圆圈可以d显示为相应大小的图标(如绘图示例中所示)
var circle = new ol.geom.Circle([-2.59394, 51.45271], 0.001).transform('EPSG:4326', 'EPSG:3857');

//circle.transform('EPSG:4326', 'EPSG:3857');
var feature=new ol.Feature({
    geometry: circle
});

var congestionLayer = new ol.layer.Vector({
    source: new ol.source.Vector({
        features: [feature]
    }),
    //style: styleFunction,
    style: new ol.style.Style({
        fill: new ol.style.Fill({
            color: 'rgba(0, 255,0, 0.3)'
        }),
        stroke: new ol.style.Stroke({
            color: '#737373',
            width: 2
        }),
        image: new ol.style.Circle({
            radius: 70,
            fill: new ol.style.Fill({
                color: '#ffcc33'
            })
        })
    }),
    visible: true
})

var map = new ol.Map({
    target: 'map',
    layers: [
        new ol.layer.Tile({
            source: new ol.source.OSM()
        }),
        congestionLayer
    ],
    view: new ol.View({
        center: ol.proj.fromLonLat([-2.59394, 51.45271]),
        projection: 'EPSG:3857',
        zoom: 14
    })
});