Berbagi teknologi

Aplikasi peta penulisan Qt/C/unduhan peta offline/perencanaan jalur/pemutaran trek/titik besar/konversi koordinat

2024-07-08

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

1. Kata Pengantar

Komponen peta ini telah ditulis selama bertahun-tahun, desain awalnya relatif kasar, pada awalnya hanya untuk memenuhi kebutuhan proyek dan tidak terlalu mempertimbangkan skalabilitas ke Peta Baidu. Setelah banyak pengembangan dalam beberapa tahun terakhir, Aplikasi praktis di situs, serta sejumlah besar saran perbaikan yang diajukan oleh pengguna, secara bertahap memunculkan gagasan untuk sepenuhnya menulis ulang kode terkait peta yang sesuai. , seperti desain subkelas kelas dasar, dan berbagai antarmuka fungsional yang berinteraksi melalui fungsi js alih-alih menulis banyak kode di tengah halaman web.

Contoh peta sebelumnya relatif kasar dalam penulisannya. Saya menulis apa pun yang saya pikirkan. Fungsi-fungsinya bertumpuk dengan serius, yang membuatnya lebih membengkak. Demonstrasi fungsi pada antarmuka juga relatif tidak intuitif waktu untuk merekonstruksinya selama ini, termasuk semua contoh telah difaktorkan ulang. Untuk terlalu banyak contoh demonstrasi, direktori terpisah dibuat untuk menyimpan kode dari setiap contoh kecil, dan kode tersebut dipecah, sehingga sangat nyaman untuk mempelajari fungsinya. dari grup ini. Sebelumnya, ada banyak kode contoh. Jika ditumpuk dalam satu kelas, akan memakan waktu lama untuk menemukannya. Hal yang paling menyebalkan bagi programmer adalah terlalu banyak kode dalam satu file kode dapat dibagi menjadi beberapa kelompok jika mereka bisa.

2. Fitur fungsional

  1. Mendukung banyak inti peta, menggunakan Baidu Map secara default.
  2. Ini mendukung mode peta online dan peta offline secara bersamaan. Peta offline nyaman untuk digunakan dalam skenario yang tidak terhubung ke Internet.
  3. Mendukung aktivasi berbagai kontrol peta, seperti navigasi peta, jenis peta, thumbnail, skala, navigasi panorama, kondisi lalu lintas waktu nyata, alat menggambar, panel hasil, dll.
  4. Mendukung pengaktifan dan penonaktifan dinamis beberapa fungsi peta, seperti menyeret peta, pengoperasian keyboard, zoom roda, klik dua kali untuk memperbesar, dan rentang peta.
  5. Menyediakan banyak antarmuka fungsi js untuk interaksi, dengan parameter yang sangat kaya, mencakup semua persyaratan skenario aplikasi yang mungkin.
  6. Mekanisme sinyal dan slot terpadu, hasil di peta dikirim sebagai sinyal terpadu, dan dibedakan menurut jenisnya setelah diterima.
  7. Mendukung interaksi peta, seperti menekan mouse untuk mendapatkan garis lintang dan bujur dari lokasi yang bersangkutan. Klik titik label untuk memunculkan informasi tentang titik terkait.
  8. Mendukung penambahan anotasi, menghapus anotasi, memindahkan anotasi, dan menghapus anotasi.
  9. Titik penandaan dapat menentukan gambar ikon, mengatur sudut rotasi, dan memiliki informasi prompt teks kaya.
  10. Peristiwa titik label mendukung pemberitahuan sinyal sekali klik dan kotak pop-up untuk menampilkan informasi.
  11. Menyediakan antarmuka alamat-ke-koordinasi dan koordinat-ke-alamat.
  12. Mendukung berbagai gambar grafis, termasuk diagram garis, poligon, persegi panjang, lingkaran, busur, dll.
  13. Bilah alat gambar mengambang dapat ditampilkan untuk langsung menggambar garis, menandai titik, persegi panjang, lingkaran, dll. pada peta.
  14. Mendukung berbagai pencarian area, seperti area persegi panjang dan area melingkar, serta dapat menampilkan hasil pencarian pada peta berdasarkan pencocokan kata kunci.
  15. Data titik batas wilayah administratif offline dapat ditambahkan secara dinamis. Anda dapat mencari pembagian administratif dan memperoleh data titik batas wilayah tersebut. Data dapat disimpan ke file untuk penggunaan offline.
  16. Mendukung fungsi agregasi titik, beberapa titik label kecil digabungkan menjadi satu titik label besar untuk mencegah interaksi tidak bersahabat yang disebabkan oleh titik padat.
  17. Sejumlah besar titik dapat ditambahkan, dan setiap titik dapat diklik untuk mendapatkan koordinat dan informasi yang sesuai.
  18. Semua informasi cakupan, seperti titik yang ditandai, persegi panjang, poligon, diagram garis, dll., dapat diperoleh secara aktif.
  19. Mendukung perencanaan jalur, termasuk rute bus, rute mengemudi mandiri, rute berjalan kaki, dan rute bersepeda. Kueri yang berbeda mendukung strategi yang berbeda, termasuk waktu minimum, transfer minimum, dan tidak ada rute layang.
  20. Hasil perencanaan jalur ditampilkan pada peta, dan kumpulan koordinat titik jalur juga dapat diperoleh. Data ini dapat disimpan ke dalam file sehingga dapat dikirim ke robot atau drone untuk navigasi dan lintasan pergerakan.
  21. Tampilan peta yang berbeda dapat diatur seperti peta jalan, peta satelit, dan peta hibrid.
  22. Gaya yang berbeda dapat diatur, seperti biru tengah malam, hijau rumput, dan gaya lainnya.
  23. Menyediakan modul pengunduhan peta offline. Anda dapat memilih inti peta yang berbeda seperti Baidu Maps atau Google Maps, jenis peta berbeda seperti mengunduh peta jalan atau peta satelit, level peta berbeda, dan pengunduhan multi-utas yang sangat cepat.
  24. Baris tabel menampilkan kemajuan pengunduhan ubin yang sesuai secara real-time, termasuk waktu tunggu pengunduhan dan jumlah percobaan ulang. Pemberitahuan sinyal dikirim untuk setiap penyelesaian pengunduhan ubin, dan parameternya mencakup waktu pengunduhan.
  25. Menyediakan modul pengunduhan peta garis besar provinsi dan kota untuk secara otomatis mengunduh peta garis besar setiap wilayah dan menyimpannya ke file skrip atau file teks.
  26. Mendukung penyesuaian manual batas kontur area yang berbeda Setelah penyesuaian, kumpulan titik batas yang disesuaikan dapat diperoleh secara aktif.
  27. Memberikan contoh titik dinamis, memilih titik pada peta secara manual dan menambahkan label, dengan informasi yang disesuaikan seperti kecepatan dan waktu.
  28. Memberikan contoh titik masif, menambahkan titik label, agregasi titik, dan titik masif dalam batch. Digunakan untuk menguji performa titik maksimum yang didukung di lingkungan.
  29. Mendukung konversi koordinat GPS, dan menyediakan metode online dan offline. Umumnya, perangkat menerima koordinat GPS standar, yang perlu diubah menjadi koordinat Baidu di Baidu Maps.
  30. Contoh lintasan dinamis disediakan. Setelah menekan mouse pada peta untuk memilih titik awal dan titik akhir, rute ditanyakan, titik lintasan diperoleh, dan pengatur waktu mensimulasikan pergerakan lintasan. Data dapat disaring untuk memfilter titik jalan yang berlebihan hingga sejumlah titik tertentu.
  31. Memberikan contoh pemutaran trek, yang dapat diputar ulang sesuai dengan daftar titik trek yang ditentukan. Data titik trek juga dapat diimpor untuk diputar. Ini juga mendukung pemutaran trek di peta jalan, peta satelit, dan peta campuran.
  32. Memberikan contoh peta wilayah provinsi dan kota, menggunakan komponen chart, dan juga mendukung peta titik berkedip, peta migrasi, peta wilayah, peta dunia, dashboard, dll. Anda dapat mengatur berbagai warna seperti judul, informasi cepat, warna latar belakang, warna teks, warna garis, warna area, dll.
  33. Contoh peta wilayah provinsi dan kota, peta dunia bawaan, peta nasional, peta provinsi, peta daerah, akurat sampai kabupaten, semua peta bisa digunakan secara offline. Anda dapat mengatur kumpulan nama, nilai, garis bujur dan garis lintang kota.
  34. Komponen browser universal bawaan, dan mendukung webkit/webengine/miniblink dan kernel lainnya. Memberikan contoh kontrol halaman web untuk mendemonstrasikan halaman web pembuka dan file halaman web lokal.
  35. Mendukung versi Qt apa pun, sistem apa pun, dan kompiler apa pun.

3. Penggunaan kode

  1. Salin dua direktori komponen core_map (komponen peta)/core_webview (komponen browser) ke direktori proyek Anda, isi kode impor di pro dan tambahkan ke proyek Anda. $PWD/…/ mewakili direktori tingkat atas.
include ($$PWD/../core_map/core_map.pri)
include ($$PWD/../core_webview/core_webview.pri)
  1. Untuk mengaktifkan kernel peta di pro, misalnya, kernel peta Baidu memerlukan penambahan baris yang mendefinisikan DEFINES = badux di file pro.
  2. Impor file header.
#include "webview.h"
#include "mapbase.h"
  1. Buat formulir baru dan letakkan tata letak di atasnya. Disarankan untuk menggunakan gridlayout, yang dapat menempatkan banyak kontrol browser.
  2. Buat instance kelas browser dan kelas peta.
//实例化浏览器控件
WebView *webView = new WebView(this);
//加入到布局
webView-