Saya memiliki peta OpenLayers 3.2.0 yang menampilkan beberapa sumber vektor ( ol.source.Vector
) dan layer vektor terkait ( ol.layer.Vector
)
Ketika Fitur ( ol.Feature
) ditambahkan ke sumber vektor, mereka diberikan data
properti yang diatur ke objek javascript yang diwakili fitur. TypeScript mengikuti ...
vectorSource.addFeature(new ol.Feature({
geometry: /* ... */,
data: vectorData,
}));
Lapisan vektor kemudian memiliki fungsi-gaya yang membaca data
properti dan mengambil gayanya:
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 */
}
}
});
Terkadang, peristiwa yang tidak terkait dengan peta menyebabkan gaya berubah. Misalnya, ketika suatu objek menjadi tidak valid, gayanya berubah. Jelas, karena data.style
sepenuhnya dalam kendali saya, mengubahnya sepele.
Masalahnya adalah bahwa peta tidak tahu bahwa gayanya telah berubah. Jika saya mengubah gaya objek dan kemudian memperbesar peta, memaksanya untuk menggambar ulang, saya perhatikan bahwa fungsi gaya saya berjalan dan mengembalikan gaya baru dan fitur tersebut digambar ulang. Bagaimana saya secara sistematis memaksa peta untuk menyegarkan?
Setelah beberapa pencarian dan percobaan, saya telah mencoba:
- Memanggil
render()
padaol.Map
itu sendiri. - Memanggil
dispatchChangeEvent()
padaol.source.Vector
- Memanggil
redraw()
padaol.layer.Vector
Ini disarankan tetapi tidak ada yang bekerja, yang tidak mengejutkan karena hanya metode pertama yang terdaftar dalam dokumentasi OpenLayers 3.2.0 API dan tidak ditandai sebagai stabil.