は例をドロップ/公式ドラッグをチェックデモリンクを探すに基づいてスタイルを適用します - >ol3 example
可能なすべてのジオメトリを扱います。
だから、あなたのスタイルオブジェクトを宣言
var defaultStyle = {
'Point': new ol.style.Style({
image: new ol.style.Circle({
fill: new ol.style.Fill({
color: 'rgba(255,255,0,0.5)'
}),
radius: 5,
stroke: new ol.style.Stroke({
color: '#ff0',
width: 1
})
})
}),
'LineString': new ol.style.Style({
stroke: new ol.style.Stroke({
color: '#f00',
width: 3
})
}),
'Polygon': new ol.style.Style({
fill: new ol.style.Fill({
color: 'rgba(0,255,255,0.5)'
}),
stroke: new ol.style.Stroke({
color: '#0ff',
width: 1
})
}),
'MultiPoint': new ol.style.Style({
image: new ol.style.Circle({
fill: new ol.style.Fill({
color: 'rgba(255,0,255,0.5)'
}),
radius: 5,
stroke: new ol.style.Stroke({
color: '#f0f',
width: 1
})
})
}),
'MultiLineString': new ol.style.Style({
stroke: new ol.style.Stroke({
color: '#0f0',
width: 3
})
}),
'MultiPolygon': new ol.style.Style({
fill: new ol.style.Fill({
color: 'rgba(0,0,255,0.5)'
}),
stroke: new ol.style.Stroke({
color: '#00f',
width: 1
})
})
};
Anが、その後、
var styleFunction = function(feature, resolution) {
var featureStyleFunction = feature.getStyleFunction();
if (featureStyleFunction) {
return featureStyleFunction.call(feature, resolution);
} else {
return defaultStyle[feature.getGeometry().getType()];
}
};
最後に、あなたのスタイルの関数を作成し、あなたのベクトル層
map.addLayer(new ol.layer.Vector({
source: new ol.source.Vector({}),
style: styleFunction
}));
に問題にスタイル機能をasign地図を移動するたびに呼び出されるということです。しかし、これは公式文書で使われている方法なので、それをやる方法だと思います。ありがとう! – Mehdiway
あなたは答えがうまくいますが、実際にはそのスタイル関数がすべてのマップ移動で実行されているのを好まないのです。私はあなたがそれがあなたに悪い業績を与えるべきであるという理由で本当に好きではありません。私が正しいとすれば、あなたのスタイルをキャッシュしてパフォーマンスを向上させることができます。もしあなたのケースが私にあなたのスタイルをキャッシュするためにコードをスナップしてくれたらと頼んでください。 – pavlos
'getStyleFunction'は、関数が実行されるたびに新しいものを割り当てるのではなく、その機能のスタイルを取得します – Mehdiway