tldr:最近,我对Google Maps JavaScript API v3的使用不再显示路线或标记。它在我的Debian-box上工作正常,但在我尝试的任何Windows计算机上都没有(从XP到Windows 8)。最近API有变化吗?我的代码有问题吗?见http://pastebin.com/ubRGPtDZ
亲爱的,
2014年8月,我写了一个Qt程序,在某个阶段在QWebView中显示谷歌地图。通过JavaScript,我能够绘制一条路线。
该计划一直运作良好,截至12月中旬。在我的Linux-box(Debian)上,它仍然可以正常工作,但在我尝试的每台Windows计算机上,都停止显示路由。谷歌地图本身显示正常,但它停止显示任何路线,任何标记,......
2014年12月中旬Google地图中有任何变化吗?我检查了changelog of Javascript Maps API v3,但在2014年9月之后我没有看到任何新的提及。
我应该去别的地方查一下吗?
或者自12月中旬以来,Windows框上的QWebView行为是否有任何变化?这甚至可能吗?
我仍然认为我的JavaScript调整不充分,所以我也会对这些代码进行调试,但我肯定会感到困惑的是,在Windows计算机上一切正常工作超过4个月,而且仍然在我的Debian-Box上。我已将其置于http://pastebin.com/ubRGPtDZ。
对于任何不良英语,非母语人士,我深表歉意。
谢谢大家的任何建议。
维姆
答案 0 :(得分:0)
用lowsnr的话来说:
作为Google代码执行以确定的测试的一部分 无论浏览器是否启用了触控功能,都会检查用户代理 Chrome> = 5.0 ,因此将用户代理更改为类似的内容 “Chrome / 1.0”触控界面受到抑制。
显然,显示路线(*)也需要它。所以我结束了一个名为myWebPage
的新类,并从qWebPage
:
class myWebPage : public QWebPage
{
virtual QString userAgentForUrl(const QUrl& url) const {
return "Chrome/1.0";
}
};
在qWebView中加载Yuvalal之前,我使用setPage()
:
ui->setupUi(this);
ui->webView->setPage(new myWebPage());
ui->webView->setHtml("...");
现在它就像一个魅力: - )
-
(*)对我来说,证明问题不是我的JavaScript,我试图简单地加载HTML中使用的相同HTML脚本。在QWebView中,它适用于我的Linux机箱,但拒绝显示我尝试过的任何Windows编译二进制文件的说明。但是,如果加载到常规浏览器,代码仍可正常工作。
结论:谷歌地图不像QWebView那样必要。