2011-12-15 10 views
14

Sto sviluppando un'applicazione in cui ho bisogno di aggiungere la mappa di Google nella nostra applicazione. Sto usando Qt con la progettazione dell'interfaccia utente e non sto usando QML. C'è qualche API per Qt per symbian o qualsiasi file da aggiungere alla porta nella mia app?Come aggiungere Google Maps nella mia applicazione in Qt?

+0

Non sono sicuro. Forse, puoi usare QWebView. –

+0

mi spiegheresti di più per favore.,., Lwin Htoo Ko – Naufal

risposta

3
QWebView *webView = new QWebView(parentWidget); 
    webView->resize(1000,500); 
    webView->move(10,10); 
    QString gMapURL = "England"; // this is where you want to point 
    gMapURL = "http://maps.google.com.sg/maps?q="+gMapURL+"&oe=utf-8&rls=org.mozilla:en-US:official&client=firefox-a&um=1&ie=UTF-8&hl=en&sa=N&tab=wl"; 
    webView->setUrl(QUrl(gMapURL)); 

Questo è un modo economico per ottenere la mappa di Google in Qt. Forse, c'è un modo più intelligente di farlo utilizzando i servizi web dell'API di Google Maps. http://code.google.com/apis/maps/documentation/webservices/index.html

+0

Ciao sto ricevendo la posizione e l'indirizzo da un valore analizzato. quando premo il tasto mappa ho bisogno di mostrare quella posizione sulla mappa !! È quello possibile in Qt per Symbian ??? qualcuno mi può aiutare con le API alla porta nel progetto – Naufal

+0

FYI http://www.developer.nokia.com/Community/Wiki/How_to_show_city_locations_in_a_map_using_Qt_and_Google_Maps_API http: // doc .qt.nokia.com/qtmobility-1.1-tp/fetchgooglemaps.html –

+1

HI c'è un codice postale per questo !!! Proverò questo codice ora. ,,. Lwin Htoo Ko – Naufal

0

Ho un piccolo progetto (https://github.com/skhaz/qtgps) che utilizza Google Maps in un qwebview e alcuni javascript per interagire

+0

Ciao, Skhaz grazie per le vostre risposte ... cercherò di farvi sapere a volte ... :) – Naufal

+1

Ho provato il tuo progetto ma sempre segfaults durante il caricamento della pagina web. Persino segfaults se cambio il web da Google Maps a Google. –

2

Ho lavorato sul mio progetto universitario in Qt utilizzando Google Maps come il widget principale. Fondamentalmente, è meglio caricare un file HTML esterno in QWebView che contenga il codice javascript necessario per caricare la mappa. Questa pratica ti consente di definire le funzioni javascript all'interno del file HTML che può controllare la mappa (marcatori, ecc.) Che puoi quindi chiamare facilmente nel tuo codice Qt. C'è però un problema. Quando carichi la mappa nel tuo widget QWebView non sarai in grado di interagire con essa. Per sbarazzarsi di questo problema è necessario creare una classe che eredita QWebPage che finge agente utente, ad esempio:

class myWebPage : virtual public QWebPage 
{ 
    virtual QString userAgentForUrl(const QUrl& url) const 
    { 
     return "Chrome/1.0"; 
    } 
}; 

Sarà necessario creare una classe che eredita QWebView e impostare questa classe pagina principale per nuove istanza della classe myWebPage. Il passaggio successivo consiste nell'aggiungere un widget QWebView nella finestra di progettazione. Promuovi questo widget nella tua classe personalizzata QWebView. Avrai quindi una mappa completamente funzionale.

API
8

-qt per Google Maps-
Da: http://www.ics.com/technologies/qt_google_apis

  • QML & Qt Google Maps: http://code.google.com/p/qt-google-maps/wiki/About

    funzioni API utilizzate in questo progetto:

    • Cre mangiato e mappa messa a punto
    • Creare segnaposto (marker)
    • Goto segnaposto
  • Qt Google Places: http://code.google.com/p/qt-google-places/wiki/About

    funzioni API utilizzate in questo progetto:

    • Crea e aggiorna la mappa
    • completamento automatico l'indirizzo di ricerca
    • ottenere le coordinate per indirizzo
    • ricerca posti per nome, tipo e posizione
    • Get dettagli di un luogo
    • Aggiungi nuovo posto utente
    • posto Elimina utente
    • Aggiungi nuovo evento
    • Elimina evento
  • QML & Qt Google Latitude: http://code.google.com/p/qt-google-latitude/wiki/About

    funzioni API utilizzate in questo progetto:

    • Creare e mappa messa a punto
    • Crea segnaposto (marker)
    • Prendi posizione corrente
    • Inserisci posizione corrente
    • Ottieni la cronologia di locat ione
    • Inserisci per storia del luogo
    • Goto affrontare
0

Se si potesse utilizzare altri fornitori di mappe, v'è ora QtLocation modulo (attualmente Previw tecnico a partire dal momento in cui scriviamo per Qt 5.5) che può eseguire il rendering delle mappe QUI, Mapbox e OpenStreetMap e inoltre è possibile creare il proprio plugin per altri provider.

Anche se purtroppo Google Maps non è supportato e assomiglia a it's not going to happen a causa dei Termini di Google Maps & Condizioni.

1

L'utilizzo di QWebView potrebbe probabilmente funzionare, ma non ho idea se l'interazione possa avvenire tra Google Maps e il tuo codice.

Il mio progetto si basa sul codice qt-google-maps. È ancora possibile trovare presso il Google Code Archive:

mi ricordo che ho dovuto cambiare un po 'perché il codice è basata sulla versione 2 di Google Maps API, e ora era supportata solo la versione 3. Ma anche quello era abbastanza facile. Vedo che il "nuovo" codice ora incorpora anche la versione 3.

Su GitHub ho trovato anche un project that uses the code, but made a QT5-version ed è stato attivo fino a un anno fa, quindi probabilmente avete più possibilità di trovare codice funzionante lì.

Sul mio GitHub personale, ho deciso di continuare a utilizzare QT4 e l'interazione con Google Maps sta andando abbastanza bene. Here is the latest version, ma il codice è probabilmente un po 'disordinato e incomprensibile a causa della mancanza di tempo per lavorarci su in modo più approfondito (mi dispiace per questo), quindi è meglio iniziare from this commit. Ha la versione base di qt-google-maps del 2012, aggiornata da me per Google Maps APIv3 (quindi ci saranno alcune differenze con il primo link che ho postato qui), e non troppo del mio codice personale in esso.

Assicurarsi di leggere il compile instructions.

Problemi correlati