Teknologian jakaminen

Qt/C:n kirjoittaminen karttasovellus / offline-kartan lataus / polun suunnittelu / kappaleiden toisto / massiiviset pisteet / koordinaattimuunnos

2024-07-08

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

1. Esipuhe

Tämä karttakomponentti on kirjoitettu useita vuosia. Alkuperäinen suunnittelu oli vain projektin tarpeita huomioimatta. Esimerkiksi se oli alun perin kirjoitettu koodiin Baidu Mapiin viime vuosien aikana tehdyn pitkän kehityksen jälkeen paikan päällä olevat käytännölliset sovellukset sekä monet käyttäjien esittämät parannusehdotukset johtivat vähitellen ajatukseen vastaavien karttaan liittyvien koodien kirjoittamisesta kokonaan uudelleen. , kuten perusluokan alaluokkien suunnittelu ja erilaiset toiminnalliset rajapinnat, jotka ovat vuorovaikutuksessa js-toimintojen kautta sen sijaan, että kirjoittaisivat joukon koodia verkkosivulle.

Edelliset karttaesimerkit olivat melko karkeita kirjoitin aikaa rekonstruoida ne koko tämän ajan, mukaan lukien kaikki esimerkit on tehty uudelleen Liian monille esimerkkiesittelyille luodaan erillinen hakemisto kunkin pienen esimerkin koodin tallentamiseen, ja koodi on jaettu, mikä tekee funktioiden oppimisesta erittäin kätevää. Tästä ryhmästä oli joukko esimerkkikoodeja voidaan jakaa ryhmiin, jos mahdollista.

2. Toiminnalliset ominaisuudet

  1. Tukee useita karttaytimiä käyttämällä oletuksena Baidu Mapia.
  2. Se tukee sekä online- että offline-karttatilaa samanaikaisesti. Offline-kartat ovat käteviä käytettäväksi tilanteissa, joissa ei ole yhteyttä Internetiin.
  3. Tukee erilaisten karttasäätimien aktivointia, kuten karttanavigointia, karttatyyppejä, pikkukuvia, mittakaavoja, panoraamanavigointia, reaaliaikaisia ​​liikenneolosuhteita, piirustustyökaluja, tulospaneeleja jne.
  4. Tukee useiden karttatoimintojen dynaamista käyttöönottoa ja poistamista käytöstä, kuten kartan vetämistä, näppäimistön käyttöä, pyörän zoomausta, kaksoisnapsautusta suurentaaksesi ja kartan aluetta.
  5. Tarjoaa lukuisia js-toimintorajapintoja vuorovaikutusta varten erittäin monipuolisilla parametreilla, jotka kattavat kaikki ajateltavissa olevat sovellusskenaarioiden vaatimukset.
  6. Yhtenäinen signaali- ja välimekanismi, kartan tulokset lähetetään yhtenäisenä signaalina, ja ne erotetaan tyypin mukaan vastaanoton jälkeen.
  7. Tukee karttavuorovaikutusta, kuten hiiren painamista saadaksesi vastaavan sijainnin leveys- ja pituusasteet. Napsauta tarrapistettä, niin saat näkyviin tiedot vastaavasta pisteestä.
  8. Tukee merkintöjen lisäämistä, merkintöjen poistamista, merkintöjen siirtämistä ja merkintöjen poistamista.
  9. Merkintäpisteet voivat määrittää kuvakekuvia, asettaa kiertokulmia ja sisältää runsaasti tekstiä koskevia kehotteita.
  10. Tarrapistetapahtumat tukevat yhden napsautuksen signaali-ilmoitusta ja ponnahdusikkunoita tietojen näyttämiseksi.
  11. Tarjoaa osoite-koordinaatti- ja koordinaatisto-osoitteisiin rajapinnat.
  12. Tukee erilaisia ​​grafiikkapiirroksia, mukaan lukien viivakaaviot, polygonit, suorakulmiot, ympyrät, kaaret jne.
  13. Kelluva piirustustyökalurivi voidaan näyttää suoraan piirtämään viivoja, merkitsemään pisteitä, suorakulmioita, ympyröitä jne. kartalle.
  14. Tukee erilaisia ​​aluehakuja, kuten suorakaiteen muotoisia alueita ja pyöreitä alueita, ja voi näyttää hakutuloksia kartalla avainsanahaun perusteella.
  15. Offline-tilassa olevia hallintopiirin rajapistetietoja voidaan lisätä dynaamisesti. Voit etsiä hallinnollisia jakoja ja hankkia kyseisen alueen rajapistetietoja. Tiedot voidaan tallentaa tiedostoon offline-käyttöä varten.
  16. Tukee pisteiden yhdistämistoimintoa, useat pienet etikettipisteet yhdistetään yhdeksi suureksi etikettipisteeksi tiheiden pisteiden aiheuttaman epäystävällisen vuorovaikutuksen estämiseksi.
  17. Voit lisätä suuren määrän pisteitä, ja jokaista pistettä voidaan napsauttaa saadaksesi vastaavat koordinaatit ja tiedot.
  18. Kaikki peittotiedot, kuten merkityt pisteet, suorakulmiot, polygonit, viivakaaviot jne., voidaan saada aktiivisesti.
  19. Tukee reitin suunnittelua, mukaan lukien bussireitit, itse ajavat reitit, kävelyreitit ja pyöräilyreitit. Erilaiset kyselyt tukevat erilaisia ​​strategioita, mukaan lukien minimiaika, minimisiirrot ja ei korkeita reittejä.
  20. Reitin suunnittelun tulokset näkyvät kartalla, ja polkupisteen koordinaattisetkin voidaan myös saada. Nämä tiedot voidaan tallentaa tiedostoon, jotta ne voidaan lähettää robotille tai droonille navigointia ja lentoradan liikettä varten.
  21. Voit määrittää erilaisia ​​karttanäkymiä, kuten katukartan, satelliittikartan ja hybridikartan.
  22. Voidaan asettaa erilaisia ​​tyylejä, kuten keskiyönsininen, ruohonvihreä ja muita tyylejä.
  23. Tarjoaa offline-kartan latausmoduulin. Voit valita erilaisia ​​karttaytimiä, kuten Baidu Mapsin tai Google Mapsin, erilaisia ​​karttatyyppejä, kuten katukarttojen tai satelliittikarttojen lataamisen, erilaisia ​​karttatasoja ja monisäikeisiä erittäin nopeita latauksia.
  24. Taulukon rivi näyttää vastaavan ruudun latauksen edistymisen reaaliajassa, mukaan lukien latauksen aikakatkaisu ja uudelleenyritysten lukumäärä. Jokaisesta ruudun latauksen valmistumisesta lähetetään signaali-ilmoitus, ja parametrit sisältävät latausajan.
  25. Tarjoaa maakunnan ja kaupungin ääriviivakarttojen latausmoduulin, joka lataa automaattisesti kunkin alueen ääriviivakartat ja tallentaa ne komentosarjatiedostoiksi tai tekstitiedostoiksi.
  26. Tukee eri alueiden ääriviivarajojen manuaalista säätöä Säädön jälkeen säädetyt rajapisteet voidaan saada aktiivisesti.
  27. Tarjoaa dynaamisia pisteesimerkkejä, manuaalisesti valita pisteitä kartalta ja lisätä tarroja mukautetuilla tiedoilla, kuten nopeudella ja ajalla.
  28. Tarjoaa massiivisia pisteesimerkkejä, lisää etikettipisteitä, pisteiden yhdistämistä ja massiivisia pisteitä erissä. Käytetään ympäristössä tuetun maksimipisteen suorituskyvyn testaamiseen.
  29. Tukee GPS-koordinaattien muuntamista ja tarjoaa sekä online- että offline-menetelmiä. Yleensä laite vastaanottaa standardinmukaiset GPS-koordinaatit, jotka on muutettava Baidu-koordinaateiksi Baidu Mapsissa.
  30. Esitellään esimerkki dynaamisesta lentoratasta. Kun aloitus- ja päätepiste on valittuna hiirellä kartalla, reittiä kysytään, polun liikeradan pisteet saadaan ja ajastin simuloi liikeradan liikettä. Tiedot voidaan suodattaa liiallisten reittipisteiden suodattamiseksi tiettyyn pisteiden määrään asti.
  31. Tarjoaa esimerkin kappaleiden toistosta, joka voidaan toistaa määritetyn raitapisteluettelon mukaan. Raitapistetiedot voidaan myös tuoda toistoa varten. Se tukee myös kappaleiden toistoa katukartoissa, satelliittikartoissa ja sekakartoissa.
  32. Tarjoaa esimerkkejä maakuntien ja kuntien aluekartoista käyttämällä echart-komponenttia, ja tukee myös vilkkupistekarttoja, muuttokarttoja, aluekarttoja, maailmankarttoja, kojelaudoita jne. Voit asettaa erilaisia ​​värejä, kuten otsikon, kehotteen tiedot, taustavärin, tekstin värin, viivan värin, alueen värin jne.
  33. Esimerkkejä maakuntien ja kaupunkien aluekartoista, sisäänrakennetusta maailmankartasta, kansallisesta kartasta, maakunnan kartasta, aluekarttasta, läänin tarkkuudella, kaikkia karttoja voidaan käyttää offline-tilassa. Voit määrittää kaupungin nimen, arvon, pituus- ja leveysastekokoelman.
  34. Sisäänrakennetut yleiset selainkomponentit ja tukee webkit/webengine/miniblink ja muita ytimiä. Tarjoaa web-sivun ohjausesimerkkejä web-sivujen avaamisen ja paikallisten verkkosivujen tiedostojen näyttämiseksi.
  35. Tukee mitä tahansa Qt-versiota, mitä tahansa järjestelmää ja mitä tahansa kääntäjää.

3. Koodin käyttö

  1. Kopioi kaksi komponenttihakemistoa core_map (karttakomponentti)/core_webview (selainkomponentti) projektihakemistoosi, täytä tuontikoodi prossa ja lisää se projektiisi. $PWD/…/ edustaa ylemmän tason hakemistoa.
include ($$PWD/../core_map/core_map.pri)
include ($$PWD/../core_webview/core_webview.pri)
  1. Karttaytimen ottamiseksi käyttöön pro-ohjelmassa esimerkiksi Baidu-karttaydin vaatii pro-tiedostoon rivin, joka määrittää DEFINES = baidux.
  2. Tuo otsikkotiedostoja.
#include "webview.h"
#include "mapbase.h"
  1. Luo uusi lomake ja aseta siihen asettelu. Suosittelemme käyttämään ruudukkoasettelua, joka voi asettaa useita selaimen säätimiä.
  2. Toteuta selainluokka ja karttaluokka.
//实例化浏览器控件
WebView *webView = new WebView(this);
//加入到布局
webView-