Bazı vektör kaynakları ( ol.source.Vector) ve ilişkili vektör katmanları ( ol.layer.Vector) özellikleri bir OpenLayers 3.2.0 harita var
ol.FeatureVektör kaynaklarına Unsurlar ( ) eklendiğinde, bunlara dataunsurun temsil ettiği javascript nesnesine ayarlanmış bir özellik verilir . TypeScript aşağıdakileri takip eder ...
vectorSource.addFeature(new ol.Feature({
geometry: /* ... */,
data: vectorData,
}));
Vektör katmanları daha sonra dataözelliği okuyan ve stilini alan bir stil işlevine sahiptir :
vectorLayer = new ol.layer.Vector({
source: vectorSource,
renderBuffer: /* ... */,
style: function (feature: ol.Feature, resolution: any) {
var data = </* TypeScript Type */>feature.get('data');
if ((data) && (data.style)) {
return [data.style];
}
else {
/* return default style */
}
}
});
Bazen, harita ile ilgisi olmayan olaylar stillerin değişmesine neden olur. Örneğin, bir nesne geçersiz hale geldiğinde, stili değişir. Açıkçası, data.styletamamen benim kontrolümde olduğu için, değiştirmek önemsizdir.
Sorun, haritanın stilin değiştiğini bilmemesi. Bir nesnenin stilini değiştirip haritayı yakınlaştırıp yeniden çizmeye zorlarsam, stil işlevlerimin çalıştığını ve yeni stili döndürdüğünü ve özelliğin yeniden çizildiğini fark ederim. Haritayı programlı olarak yenilenmeye nasıl zorlarım?
Bazı arama ve denemelerden sonra denedim:
- Arama
render()üzerindeol.Mapkendisi. - Şunu arıyor
dispatchChangeEvent():ol.source.Vector - Şunu arıyor
redraw():ol.layer.Vector
Bunlar önerildi, ancak hiçbiri işe yaramadı, çünkü OpenLayers 3.2.0 API belgelerinde sadece ilk yöntem bile listelendiğinden ve kararlı olarak işaretlenmediğinden şaşırtıcı değil.