tldr:最近,我对Google Maps JavaScript API v3的使用不再显示路线或标记。它可以在我的Debian-box上正常运行,但不能在我尝试过的任何Windows计算机上运行(将XP更改为Windows 8)。API最近有变化吗?我的代码有问题吗?看到http://pastebin.com/ubRGPtDZ
各位,
2014年8月,我编写了一个Qt程序,该程序有时会在QWebView中显示Google Maps。通过JavaScript,我可以画一条路线。
到12月中旬为止,该程序一直运行良好。在我的Linux-box(Debian)上,它仍然可以正常工作,但是在我尝试的每台Windows计算机上,它都停止显示路由。Google Maps本身显示正常,但停止显示任何路线,任何标记,...
2014年12月中旬Google地图有什么变化吗?我检查了Javascript Maps API v3的更新日志,但在2014年9月之后没有看到任何新提及。
我应该在其他地方检查吗?
还是自12月中旬以来Windows盒子上的QWebView行为有变化吗?那有可能吗?
我仍然有可能我的JavaScript调整不充分,因此我也将调试该代码,但是绝对让我感到困惑的是,在Windows计算机上,所有功能都能正常运行4个月以上,而在Debian-Box上仍然可以正常运行。我已将其放在http://pastebin.com/ubRGPtDZ上。
对于任何英语不好,母语不是我的人,我深表歉意。
谢谢大家的建议。
威姆
找到了!这是一个非常令人沮丧的挑战,但是现在解决它感觉很好。我花了几天的时间浏览所有可能的文档,包括纯粹的反复试验,测试和怀疑我的代码甚至配置的各个方面,但都失败了……但是又有一次我浏览了qt项目并找到了这篇文章。由lowsnr和Yuvalal撰写。
用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";
}
};
在将HTML加载到qWebView中之前,我使用setPage()
:
ui->setupUi(this);
ui->webView->setPage(new myWebPage());
ui->webView->setHtml("...");
现在它就像一个魅力:-)
-
(*)对我来说,证明问题不是我的JavaScript的是,我试图简单地加载与Google Maps代码示例相同的HTML脚本。在QWebView中,它对我的Linux-box正常工作,但是拒绝在我尝试的任何Windows编译的二进制文件上显示说明。不过,如果您将代码加载到常规浏览器中,代码仍然可以正常工作。
结论:不需要像QWebView这样的Google Maps。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句