Google Windows 中的地图绘制路线故障
Google Maps Draw Route malfunction in Windows
tldr:最近,我使用 Google 地图 JavaScript API v3 不再显示路线或标记。它在我的 Debian-box 上工作正常,但在我试过的任何 Windows 计算机上都没有(从 XP 到 Windows 8)。 API 最近有变化吗?我的代码有问题吗?参见 http://pastebin.com/ubRGPtDZ
亲爱的大家,
2014 年 8 月,我编写了一个 Qt 程序,在某个阶段在 QWebView 中显示 Google 地图。通过JavaScript我画了一条路线。
该程序一直运行良好,直到 12 月中旬。在我的 Linux-box (Debian) 上,它仍然工作正常,但在我尝试的每台 Windows 计算机上,都停止显示路线。 Google 地图本身显示正常,但它停止显示任何路线、任何标记、...
2014 年 12 月中旬 Google 地图有什么变化吗?我检查了 changelog of Javascript Maps API v3 ,但在 2014 年 9 月之后我没有看到任何新的提及。
我应该检查其他地方吗?
或者自 12 月中旬以来 Windows-box 上的 QWebView 行为是否有任何变化?这可能吗?
我仍然认为我的 JavaScript 调整可能不充分,所以我也会调试该代码,但绝对让我感到困惑的是,在 Windows 计算机上一切正常超过 4 个月,在我的 Debian-Box 上仍然如此。我已经把它放到网上 http://pastebin.com/ubRGPtDZ .
对于英语不是母语的人,我深表歉意。
谢谢大家的建议。
维姆
找到了!这是一个非常令人沮丧的挑战,但现在它已经解决了,感觉很棒。我花了几天时间浏览任何可能的文档,纯粹的试错,测试和怀疑我的代码甚至配置的每个方面,都失败了......但是我又一次浏览了 qt-project 并发现了这个post by lowsnr and Yuvalal.
用lowsnr的话来说:
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.
显然也需要它来显示方向 (*)。所以我总结了一个名为 myWebPage
的新 class 并将其派生自 qWebPage
:
class myWebPage : public QWebPage
{
virtual QString userAgentForUrl(const QUrl& url) const {
return "Chrome/1.0";
}
};
在 qWebView 中加载 HTML 之前,我使用 setPage()
:
ui->setupUi(this);
ui->webView->setPage(new myWebPage());
ui->webView->setHtml("...");
现在它就像一个魅力:-)
--
(*) 对我来说,证明问题不是我的 JavaScript,是我试图简单地加载与 Google Maps code examples 中使用的相同的 HTML 脚本。在 QWebView 中,它适用于我的 Linux-box,但拒绝显示我尝试过的任何 Windows-编译的二进制文件的说明。尽管如此,如果您加载到常规浏览器,代码仍然可以正常工作。
结论:Google地图不需要像QWebView。
tldr:最近,我使用 Google 地图 JavaScript API v3 不再显示路线或标记。它在我的 Debian-box 上工作正常,但在我试过的任何 Windows 计算机上都没有(从 XP 到 Windows 8)。 API 最近有变化吗?我的代码有问题吗?参见 http://pastebin.com/ubRGPtDZ
亲爱的大家,
2014 年 8 月,我编写了一个 Qt 程序,在某个阶段在 QWebView 中显示 Google 地图。通过JavaScript我画了一条路线。
该程序一直运行良好,直到 12 月中旬。在我的 Linux-box (Debian) 上,它仍然工作正常,但在我尝试的每台 Windows 计算机上,都停止显示路线。 Google 地图本身显示正常,但它停止显示任何路线、任何标记、...
2014 年 12 月中旬 Google 地图有什么变化吗?我检查了 changelog of Javascript Maps API v3 ,但在 2014 年 9 月之后我没有看到任何新的提及。
我应该检查其他地方吗?
或者自 12 月中旬以来 Windows-box 上的 QWebView 行为是否有任何变化?这可能吗?
我仍然认为我的 JavaScript 调整可能不充分,所以我也会调试该代码,但绝对让我感到困惑的是,在 Windows 计算机上一切正常超过 4 个月,在我的 Debian-Box 上仍然如此。我已经把它放到网上 http://pastebin.com/ubRGPtDZ .
对于英语不是母语的人,我深表歉意。
谢谢大家的建议。
维姆
找到了!这是一个非常令人沮丧的挑战,但现在它已经解决了,感觉很棒。我花了几天时间浏览任何可能的文档,纯粹的试错,测试和怀疑我的代码甚至配置的每个方面,都失败了......但是我又一次浏览了 qt-project 并发现了这个post by lowsnr and Yuvalal.
用lowsnr的话来说:
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.
显然也需要它来显示方向 (*)。所以我总结了一个名为 myWebPage
的新 class 并将其派生自 qWebPage
:
class myWebPage : public QWebPage
{
virtual QString userAgentForUrl(const QUrl& url) const {
return "Chrome/1.0";
}
};
在 qWebView 中加载 HTML 之前,我使用 setPage()
:
ui->setupUi(this);
ui->webView->setPage(new myWebPage());
ui->webView->setHtml("...");
现在它就像一个魅力:-)
--
(*) 对我来说,证明问题不是我的 JavaScript,是我试图简单地加载与 Google Maps code examples 中使用的相同的 HTML 脚本。在 QWebView 中,它适用于我的 Linux-box,但拒绝显示我尝试过的任何 Windows-编译的二进制文件的说明。尽管如此,如果您加载到常规浏览器,代码仍然可以正常工作。
结论:Google地图不需要像QWebView。