我正试图用OpenLayers从GeoJSON文件中构建一个地图,其中每个点都有一个属性iconUrl。我想我的风格指的是那处房产,但我无法做到。我用传单做到了,你可以在这里看到目标:https://idrissad.github.io/lyon_map/
这是我的OL代码:
function styleFunction(feature) {
if (feature.get('iconUrl')) {
var iconUrl = feature.get('iconUrl');
console.log(iconUrl);
}
var defaultStyle = new ol.style.Style({
fill: new ol.style.Fill({
color: "green"
}),
stroke: new ol.style.Stroke({
color: "green",
width: 1.2
}),
image: new ol.style.Icon({
scale: 0.1,
src: iconUrl
})
})return [defaultStyle]
}
和:
const data = new ol.layer.Vector({
source: new ol.source.Vector({
url:'data.geojson',
format: new ol.format.GeoJSON
}),
style: styleFunction,
visible: true
})
我得到的错误是";断言失败:6=>必须提供已定义且非空的src或image"我试了好几种选择,都没有成功。我的console.log显示feature.get((运行良好,我在var iconUrl中有我的url。有线索吗?
由于你也有填充和笔划,你的样式也用于多边形吗?如果其他功能没有iconUrl
,则会导致错误。尝试修改样式函数,使图像部分仅在存在iconUrl
时设置
function styleFunction(feature) {
var iconUrl = feature.get('iconUrl');
var defaultStyle = new ol.style.Style({
fill: new ol.style.Fill({
color: "green"
}),
stroke: new ol.style.Stroke({
color: "green",
width: 1.2
}),
image: iconUrl ? new ol.style.Icon({
scale: 0.1,
src: iconUrl
}) : undefined
});
return [defaultStyle];
}