Bonjour,
Je suis entrain de réaliser un programme sous Qt afin de choisir un parcours sur Google map et l’intégrer dans ma base de donnée.
.pro
Dans mon .ui :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 QT += network \ webkit \ xml \ xmlpatterns TARGET = afficherGMap TEMPLATE = app SOURCES += main.cpp \ mainwindow.cpp HEADERS += mainwindow.h FORMS += mainwindow.ui OTHER_FILES += map.html
je crée une widget (widgetMap) dans ma main widget pour y loader ma page Google map.
Un bouton pour lancer l'affichage et je crée un slot.
.h:
puis je me lance dans mon .cpp
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32 #ifndef MAINWINDOW_H #define MAINWINDOW_H #include <QtGui/QMainWindow> #include <QtGui/QtGui> #include <QtCore> #include <QtWebKit/QtWebKit> namespace Ui { class MainWindow; } class MainWindow : public QMainWindow { Q_OBJECT public: MainWindow(QWidget *parent = 0); ~MainWindow(); void load(); private: Ui::MainWindow *ui; QWebView *mView; private slots: void on_btnMap_clicked(); }; #endif // MAINWINDOW_H
Et là ma page html de google map se lance bien, centré à l'endroit voulu. Cependant les marqueurs et les prises de position gps lors d'un clique ne s'affichent pas.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34 #include "mainwindow.h" #include "ui_mainwindow.h" MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow) { ui->setupUi(this); } MainWindow::~MainWindow() { delete ui; } void MainWindow::load() { mView = new QWebView( this ); mView->settings()->setAttribute( QWebSettings::JavascriptEnabled, true ); QString fileName = qApp->applicationDirPath() + "/map.html"; if( !QFile(fileName).exists() ) { qDebug() << "File not found:" << fileName; } QUrl url = QUrl::fromLocalFile( fileName ); mView->load( url ); QGridLayout *layout = new QGridLayout(ui->widgetMap); layout->addWidget( mView); } void MainWindow::on_btnMap_clicked() { load(); }
mon fichier html (fonctionnel, testé dans firefox):
Que me faut-il revoir avec mon QWebView pour que les markers et listener Google map fonctionnent dans mon programme?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72 <!DOCTYPE html> <html> <head> <title>Controling Google Maps through Qt application</title> <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=no"> <meta charset="UTF-8"> <style type="text/css"> html, body, #map_canvas { margin: 0; padding: 0; height: 90%; } </style> <script type="text/javascript" src="http://maps.googleapis.com/maps/api/js?sensor=false"></script> <script type="text/javascript"> var map; var location1; var location2; var address1; var address2; var latlng; var geocoder; var myLatlng = new google.maps.LatLng(45.20297, 5.6995); function initialize() { var myOptions = { zoom: 14, center: new google.maps.LatLng(48.681894, 6.184845), mapTypeId: google.maps.MapTypeId.HYBRID, zoomControl: true, zoomControlOptions: { style: google.maps.ZoomControlStyle.SMALL }, }; map = new google.maps.Map(document.getElementById('map_canvas'), myOptions); google.maps.event.addListener(map, 'click', function(event) { placeMarker(event.latLng); }); } function placeMarker(location) { var marker = new google.maps.Marker({ position: location, map: map }); document.getElementById("lat").innerHTML = location.lat(); document.getElementById("lon").innerHTML = location.lng(); document.getElementById("zoom_level").innerHTML = map.getZoom()+1; map.setCenter(location); } google.maps.event.addDomListener(window, 'load', initialize); </script> </head> <body> <div id="map_canvas"></div> <center> <div> lat:<span id="lat"></span> lon:<span id="lon"></span><br/> zoom level: <span id="zoom_level"></span> </div> </center> </body> </html>
Merci pour votre aide
Cordialement,
Washco
Partager