Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. Qt Development
  3. Qt WebKit
  4. QWebView and Google Maps JS API v3

QWebView and Google Maps JS API v3

Scheduled Pinned Locked Moved Qt WebKit
30 Posts 19 Posters 50.4k Views
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • F Offline
    F Offline
    fcrochik
    wrote on last edited by
    #7

    Good point about the mousetracking :)

    Very odd... I couldn't resist and compiled my application for the desktop to find out that you are right. The tracking does not work on the desktop (but it does on the n900) for http://code.google.com/intl/pl/apis/maps/documentation/javascript/examples/map-simple.html. Tracking and mousewheel work for google.com/maps.

    I tried a few things but couldn't figure out why it does not work. I would have to guess the google javascript API is checking something different than the user agent.

    Certified Specialist & Qt Ambassador <a href="http://www.crochik.com">Maemo, Meego, Symbian, Playbook, RaspberryPi, Desktop... Qt everywhere!</a>

    1 Reply Last reply
    0
    • Z Offline
      Z Offline
      zmilton
      wrote on last edited by
      #8

      Hello,

      Has anyone found out any more information about this? My application seemed to work fine before the V3 upgrade and now I cannot get the scrolling/mousewheel zooming functionality to work at all. I've tried explicitly giving the map scrollwheel and draggable settings like the above poster, but that doesn't seem to work.

      When I try to drag I get the thumbnail'd version of the map under my cursor like I am trying to drag an image.

      Also, is there something special about maps.google.com, because that does seem to work just fine using QWebView.

      1 Reply Last reply
      0
      • N Offline
        N Offline
        nelas
        wrote on last edited by
        #9

        I'm also experiencing this issue (which made my application useless). So, I found this "message":https://lists.webkit.org/pipermail/webkit-qt/2010-November/000974.html that might indicate the path to a solution. Pasting it here for practical reasons:

        bq. On 11/20/2010 08:42 AM, ext Gary.Wzl wrote:

        Browser based on Qt port of webkit (qt demo browser or arora )can't be dragged google map when webpage is loaded properly.
        http://code.google.com/intl/zh-CN/apis/maps/documentation/javascript/examples/index.html

        Qt version is 4.7.0

        bq. Looks like it's giving you a multi-touch version of the page. Some quick testing shows that QtWebKit has document.documentElement.ontouchstart and friends, whereas Chromium, Firefox, Opera etc do not (at least not on my desktop machine.) The right solution is to get Google Maps to stop sending you the touch UI, but you could of course compile QtWebKit with DEFINES+=ENABLE_TOUCH_EVENTS=0 (this is currently set to 1 in WebCore/features.pri)
        Hope that helps!
        -Kling

        Does anyone know how to intercept the touch UI from GMaps API?

        1 Reply Last reply
        0
        • N Offline
          N Offline
          nemoxu
          wrote on last edited by
          #10

          I had the some issue . And I used the google v3.1 API , map can drap/zoom. Include the google map api :
          http://maps.google.com/maps/api/js?v=3.1&sensor=true

          1 Reply Last reply
          0
          • N Offline
            N Offline
            nelas
            wrote on last edited by
            #11

            Thanks nemoxu! Adding the version (v=3.1) to the script solved the problem for me.

            1 Reply Last reply
            0
            • Chris KawaC Offline
              Chris KawaC Offline
              Chris Kawa
              Lifetime Qt Champion
              wrote on last edited by
              #12

              Yeah, it works, thanks!

              It doesn't work in later versions though (3.2, 3.3) so I hope it's not like designing for IE6 - relying on a "known bug" to make it work..

              1 Reply Last reply
              0
              • F Offline
                F Offline
                fcrochik
                wrote on last edited by
                #13

                I haven't had a chance to try but using qt webkit 2.1 (I think that is how the new branch is called) should give us all the "gestures" and the "location" api. I remember seeing a message about the beta source code being available for download.... Anybody has tried it?

                Certified Specialist & Qt Ambassador <a href="http://www.crochik.com">Maemo, Meego, Symbian, Playbook, RaspberryPi, Desktop... Qt everywhere!</a>

                1 Reply Last reply
                0
                • P Offline
                  P Offline
                  pettel
                  wrote on last edited by
                  #14

                  I have the same issue (Qt 4.7.2). Adding "js?v=3.1&sensor=true" didn't do the trick for me.
                  There is still no panning (left mousebutton) and zooming (mousewheel).

                  I compiled Qt WebKit 2.1 from the repository (mingw, gcc 4.4.0), but the example browser crashes when i try to open a webpage.

                  1 Reply Last reply
                  0
                  • C Offline
                    C Offline
                    ceptad
                    wrote on last edited by
                    #15

                    Hi,

                    Today I have tired to use google maps with Qt and I'm having the same problems. Maybe somebody has more suggestions?

                    1 Reply Last reply
                    0
                    • L Offline
                      L Offline
                      lowsnr
                      wrote on last edited by
                      #16

                      I've found a very hacky fix that can be used until Google and/or Nokia get with the program to either support WebKit or allow for the touch events to be disabled at runtime. Turns out, as part of the test that the Google code performs to determine whether the browser is touch enabled, it checks the User Agent for Chrome >= 5.0, so by changing the user agent to something like 'Chrome/1.0' the touch interface suppressed. I verified this with PySide 1.0.2 / Qt 4.7.2 / API 3.5.1 but it should in theory work with any Qt version.

                      Example (PySide):
                      @
                      class ChromePage(QWebPage):
                      def userAgentForUrl(self, url):
                      return 'Chrome/1.0'

                      _map = QWebView()
                      _map.setPage(ChromePage())
                      _map.load(QUrl('a/map/page.html'))
                      @

                      In case anyone's interested in the details, I de-minified Google's JS code and found this line:
                      @
                      ng = X[v] == 3 && X.b <= 5 ? !1 : lg(ontouchstart) && lg(ontouchmove) && lg(ontouchend)
                      @
                      which de-obsfucates roughly to:
                      @
                      useTouchUI = navigator.userAgent.toLowerCase() == 'chrome' && navigatorVersion <= 5 ? false : checkForEvent(ontouchstart) && checkForEvent(ontouchmove) && checkForEvent(ontouchend)
                      @

                      Interesting but I suppose unsurprising that Chrome is the one browser that Google checks for explicitly. I hope Google offers this as a selectable option (since it's the addition of a single line of code) but in the meantime, enjoy this fix.

                      1 Reply Last reply
                      0
                      • Y Offline
                        Y Offline
                        Yuvalal
                        wrote on last edited by
                        #17

                        Had to sign in to say thanks, you're a genius! I was struggling for weeks!

                        here is the same trick in C++:

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

                        ...
                        map->setPage(new myWebPage());
                        map->load(QUrl("a/map/page.html"));
                        ...
                        @

                        1 Reply Last reply
                        0
                        • A Offline
                          A Offline
                          Anisha Kaul
                          wrote on last edited by
                          #18

                          [quote author="Yuvalal" date="1305973922"]here is the same trick in C++:[/quote]
                          Had to sign in to say thanks to you (for posting this in C++) and to @lowsnr.

                          This worked flawlessly :hattip: to both of you (for posting the solution).

                          1 Reply Last reply
                          0
                          • G Offline
                            G Offline
                            gosztola.laszlo
                            wrote on last edited by
                            #19

                            I would like to say thank you, too
                            Nice work!

                            1 Reply Last reply
                            0
                            • N Offline
                              N Offline
                              Nasamit
                              wrote on last edited by
                              #20

                              Excellent!!! Great job!! It Works!!

                              1 Reply Last reply
                              0
                              • N Offline
                                N Offline
                                ncsunickv
                                wrote on last edited by
                                #21

                                Oustanding find!! I'm using webkit with a standard webview widget. Using the app args API works for this string, under this scheme (4.7.3):

                                QApplication app(argc, argv);
                                // Work around for QT Webkit/Google Maps V3 API to allow map panning via touch control
                                app.setApplicationName(QString("Chrome"));
                                app.setApplicationVersion(QString("1.0"));

                                1 Reply Last reply
                                0
                                • O Offline
                                  O Offline
                                  outdoor_guy
                                  wrote on last edited by
                                  #22

                                  [quote author="Yuvalal" date="1305973922"]Had to sign in to say thanks, you're a genius! I was struggling for weeks!
                                  [/quote]

                                  I was struggeled also in that problem and have to say a lot of thanks for the C++ code. Now it works :-)

                                  1 Reply Last reply
                                  0
                                  • R Offline
                                    R Offline
                                    rigelsg
                                    wrote on last edited by
                                    #23

                                    I have the same issue (Qt 4.7.2).
                                    Adding “js?v=3.1&sensor=true” doesn't change the situation.
                                    There is still no panning and zooming. I have tried this on my desktop and also on a linux board with touchscreen(the touchscreen works fine with Qt widgets ).

                                    Any idea ?

                                    1 Reply Last reply
                                    0
                                    • Chris KawaC Offline
                                      Chris KawaC Offline
                                      Chris Kawa
                                      Lifetime Qt Champion
                                      wrote on last edited by
                                      #24

                                      [quote author="rigelsg" date="1322153106"]I have the same issue (Qt 4.7.2).
                                      Any idea ?[/quote]
                                      There were 3 or so working solutions given already. Read the thread please.

                                      1 Reply Last reply
                                      0
                                      • R Offline
                                        R Offline
                                        rigelsg
                                        wrote on last edited by
                                        #25

                                        Excellent now it works :) , thank you.

                                        Is there any way to save the maps on disk using QNetworkDiskCache ?

                                        1 Reply Last reply
                                        0
                                        • M Offline
                                          M Offline
                                          monst
                                          wrote on last edited by
                                          #26

                                          Thanks to lowsnr and Yuvalal :)
                                          Your fix works for me too!

                                          1 Reply Last reply
                                          0

                                          • Login

                                          • Login or register to search.
                                          • First post
                                            Last post
                                          0
                                          • Categories
                                          • Recent
                                          • Tags
                                          • Popular
                                          • Users
                                          • Groups
                                          • Search
                                          • Get Qt Extensions
                                          • Unsolved