tldr:最近,我使用的 Google Maps JavaScript API v3 不再显示路线或标记。它在我的 Debian 机器上运行良好,但在我尝试过的任何 Windows 计算机上(从 XP 到 Windows 8)都运行不佳。 API 最近有变化吗?我的代码有问题吗?请参阅http://pastebin.com/ubRGPtDZ
<小时/>亲爱的大家,
2014 年 8 月,我编写了一个 Qt 程序,该程序在某个阶段在 QWebView 中显示 Google map 。通过 JavaScript,我能够绘制一条路线。
截至 12 月中旬,该计划一直运行良好。在我的 Linux-box (Debian) 上,它仍然工作正常,但在我尝试的每台 Windows 计算机上,它都会停止显示路线。 Google map 本身显示良好,但它停止显示任何路线、任何标记......
2014 年 12 月中旬 Google map 有什么变化吗?我检查了changelog of Javascript Maps API v3 ,但 2014 年 9 月之后我没有看到任何新的提及。
我应该检查其他地方吗?
或者自 12 月中旬以来 Windows 盒子上的 QWebView 行为有什么变化吗?这可能吗?
我仍然认为我的 JavaScript 调整可能不够充分,所以我也会调试该代码,但让我感到困惑的是,在 Windows 计算机上一切正常超过 4 个月,并且在我的 Debian-Box 上仍然如此。我已经把它放在网上http://pastebin.com/ubRGPtDZ .
对于这里出现的任何英语非母语人士,我深表歉意。
谢谢大家的建议。
Vim
最佳答案
找到了!这是一个非常令人沮丧的挑战,但现在它得到解决感觉很棒。我花了几天时间浏览所有可能的文档,纯粹的反复试验,测试和怀疑我的代码甚至配置的各个方面,都失败了......但是我再一次浏览 qt 项目并发现了这个 post by lowsnr和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
的新类,并从 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 机器上运行良好,但拒绝显示我尝试过的任何 Windows 编译的二进制文件的说明。尽管如此,如果您加载到常规浏览器,该代码仍然可以正常工作。
结论:Google map 不需要像 QWebView 那样。
关于javascript - Windows 中的 Google map 绘制路线故障,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27730642/