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
})
});