Saya memiliki lapisan geojson di aplikasi OL3 yang ingin saya gambar ulang setiap 5 detik (untuk menunjukkan pergerakan di peta).
Bagaimana saya melakukannya ? Tidak dapat menemukan yang setara dengan Layer.redraw ().
openlayers
Alophind
sumber
sumber
Jawaban:
Ini adalah cara Anda dapat menyegarkan sumber vektor setiap 5 detik, dari layanan web yang mengembalikan fitur dalam dokumen GeoJSON:
jQuery digunakan di sini untuk meminta data melalui Ajax (
$.ajax
), tetapi Anda jelas dapat menggunakan perpustakaan pilihan Anda.Cuplikan kode ini juga mengasumsikan bahwa proyeksi peta adalah "EPSG: 3857" (web mercator) dan bahwa koordinat dalam dokumen GeoJSON adalah bujur dan lintang.
sumber
vectorSource
dangeojsonSource
digabung?Saya tahu bahwa pertanyaan ini sudah lama tetapi saya akhirnya menemukan solusi untuk menyegarkan lapisan pada openlayers 3.
Anda harus memperbarui params dari sumber layer seperti ini:
sumber
updateParams
metode ini; OL3.18.2 hanya menunjukkan untukImageArcGISRest
,ImageMapGuide
,ImageWMS
,TileArcGISRest
danTileWMS
, dan bukan untuk, misalnya,ol.source.Vector
.Anda dapat menyegarkan layer WFS dengan
myLayer.getSource().clear()
.sumber
clear()
fitur yang ada akan segera dihapus dari peta, dan hanya ditambahkan lagi setelah menerima respons HTTP. Ini berlaku untuk menentukan nilai untukVectorOptions#url
dan untukVectorOptions#loader
. Untuk data realtime, secara manual melakukan beberapa WebSockets atau XHR magic dan kemudian panggilangetSource().clear()
diikuti olehgetSource().addFeatures(...)
mungkin terlihat lebih baik bagi pengguna akhir.Dengan OL2 saya menggunakan strategi refresh layer yang belum ditambahkan ke OL3. Di bawah ini adalah fungsi panggilan mandiri yang akan menggunakan permintaan ajax untuk mengambil GeoJSON dan kemudian membacanya dan menambahkannya ke sumber.
Semoga ini membantu.
sumber
Ini berfungsi sempurna untuk lapisan:
sesuai http://openlayers.org/en/latest/apidoc/ol.layer.Vector.html# berubah
sumber
layer.changed();
bekerja sempurna untuk layer. Deskripsi dokumentasiIncreases the revision counter and dispatches a 'change' event.
tidak terlalu membantu. Bagaimana cara menggunakan metode yang diubah () menjawab pertanyaan tentang menggambar kembali peta setiap 5 detik?layer.changed();
tidak berpengaruh bagi saya, tetapisource.changed();
melakukan trik.Tidak perlu menyegarkan secara eksplisit. Setiap kali Anda memperbarui konten layer, peta di-refresh meminta rendering bingkai baru.
Untuk memaksa rendering secara manual, Anda memiliki
map.render()
danmap.renderSync()
metode.sumber