是啥导致 maps.googleapis.com/maps/vt 返回 400 错误?

Posted

技术标签:

【中文标题】是啥导致 maps.googleapis.com/maps/vt 返回 400 错误?【英文标题】:What causes maps.googleapis.com/maps/vt to return a 400 error?是什么导致 maps.googleapis.com/maps/vt 返回 400 错误? 【发布时间】:2016-08-22 20:19:01 【问题描述】:

我目前正在使用带有 Fusion Table Layer 的 Google 地图。使用这张地图,我进行了 AJAX 查询来填充地图和一个包含结果的列表。

最近,Google Map API 响应出现问题,返回 400“格式错误的请求”错误。在设置过滤器并通过 AJAX 发送后,当使用新结果集填充地图时,偶尔会发生此响应。在检查错误 Firefox 的调试控制台时,我注意到 pb 参数可能是问题所在。问题是我不确定这个参数到底是什么格式错误。

这是出错的 GET 请求:

https://maps.googleapis.com/maps/vt?pb=[...insert_param_code_here...]&callback=_xdc_._n2pwun&token=20077

我将看到的内容粘贴到下面的 pb 参数中。这是在进行“无效”查询之一时发送的内容。

"!1m4!1m3!1i13!2i2042!3i3139!1m4!1m3!1i13!2i2043!3i3139!1m4!1m3!1i13!2i2042!3i3140!1m4!1m3!1i13!2i2042!3i3141!1m4!1m3!1i13!2i2043!3i3140!1m4!1m3!1i13!2i2043!3i3141!1m4!1m3!1i13!2i2042!3i3142!1m4!1m3!1i13!2i2042!3i3143!1m4!1m3!1i13!2i2043!3i3142!1m4!1m3!1i13!2i2043!3i3143!1m4!1m3!1i13!2i2044!3i3139!1m4!1m3!1i13!2i2045!3i3139!1m4!1m3!1i13!2i2046!3i3139!1m4!1m3!1i13!2i2044!3i3140!1m4!1m3!1i13!2i2044!3i3141!1m4!1m3!1i13!2i2045!3i3140!1m4!1m3!1i13!2i2045!3i3141!1m4!1m3!1i13!2i2044!3i3142!1m4!1m3!1i13!2i2044!3i3143!1m4!1m3!1i13!2i2045!3i3142!1m4!1m3!1i13!2i2045!3i3143!1m4!1m3!1i13!2i2046!3i3140!1m4!1m3!1i13!2i2046!3i3141!1m4!1m3!1i13!2i2046!3i3142!1m4!1m3!1i13!2i2046!3i3143!2m21!1e2!2sft:tableID!4m2!1ssg!2s%20Cities_With_Charters%20%3D%20'East%20St.%20Louis%20Area'%20AND%20Students_Served%20LIKE%20'%25'%20AND%20School_Type_Dropdown%20IN%20('Charter')%20ORDER%20BY%20School_Name%20ASC!4m2!1ssc!2sSchool_Info_ID%2C%20CPS_ID%2C%20RCDTS%2C%20School_Name%2C%20Street_Address%2C%20City%2C%20State%2C%20Zip%2C%20Phone%2C%20Website%2C%20Lat%2C%20Long%2C%20Year_Opened%2C%20School_Description%2C%20District_Info_ID%2C%20District_Name%2C%20Charter_Renew_YR%2C%20Network_ID%2C%20Network%2C%20Community_Area%2C%20State_Rep_District%2C%20State_Sen_District%2C%20Ward_Remapped%2C%20Grades_Served%2C%20Grades_Capacity%2C%20Serves_ES%2C%20Serves_HS%2C%20Serves_MS%2C%20Serves_Dropouts%2C%20School_Type_Dropdown%2C%20School_Type_Color%2C%20School_Type_Display%2C%20Profile_Type%2C%20SQRP_Rating%2C%20SQRP_Profile%2C%20Cities_With_Charters%2C%20Link_IIRC%2C%20Students_Served!4m2!1ssq!2s'School_Type_Color'%20%3D%20'GREEN'$'School_Type_Color'%20%3D%20'ORANGE'$'School_Type_Color'%20%3D%20'BLUE'$'School_Type_Color'%20%3D%20'MAGENTA'!4m2!1sc!2si:grn_blank$i:orange_blank$i:ltblu_blank$i:purple_blank!4m2!1sy!2s2!4m2!1stmplt!2s2!5i1!3m3!2sen-US!3sUS!5e18!4e3!12m1!5b1"

这里是没有URL编码的查询,仅供参考:

SELECT School_Info_ID, CPS_ID, RCDTS, School_Name, Street_Address, City, State, Zip, Phone, Website, Lat, Long, Year_Opened, School_Description, District_Info_ID, District_Name, Charter_Renew_YR, Network_ID, Network, Community_Area, State_Rep_District, State_Sen_District, Ward_Remapped, Grades_Served, Grades_Capacity, Serves_ES, Serves_HS, Serves_MS, Serves_Dropouts, School_Type_Dropdown, School_Type_Color, School_Type_Display, Profile_Type, SQRP_Rating, SQRP_Profile, Cities_With_Charters, Link_IIRC, Students_Served FROM tableID WHERE Cities_With_Charters = 'East St. Louis Area' AND Students_Served LIKE '%' AND School_Type_Dropdown IN ('Charter') ORDER BY School_Name ASC

到目前为止我为解决此问题所采取的步骤:

确保发送到 Fusion Tables 的任何查询字符串都已使用 URL 编码发送。 确保检查我的引号和引号,并确保发送的查询中没有任何杂散的。 检查了我的 Google 地图初始化参数,以确保我没有输入任何拼写错误或添加任何不存在的参数。

在确保不发送格式错误的内容方面,我还没有采取任何其他预防措施吗?

【问题讨论】:

GET 请求记录在哪里? 我不确定。我已经尝试搜索是否已经有任何文档,但我还没有找到任何具体的东西。到目前为止,我唯一知道的是,它似乎是 Google 发送的,作为对请求刷新或重新加载地图或其图层的响应。 我最终就此事联系了 Google,并在他们的支持建议下提交了错误报告。我已经让一些开发人员看到了这个,有人说这可能与字符/查询长度有关,其他人说问题发生的时间没有真正的模式,其他人在一致地复制问题时遇到了麻烦. @Kiwithing 我能知道你最初是如何解码 URL 的吗? @Ashar 通过在提交对 Fusion Tables 的查询时查看请求/响应标头。不幸的是,我最终为这个项目放弃了 Google Fusion Tables。 【参考方案1】:

我通过打开 Chrome 开发者工具并转到:应用程序 > 清除存储 > 清除站点数据解决了这个问题。然后,在开发人员工具仍处于打开状态的情况下,单击并按住浏览器左上角的刷新按钮,直到看到“Empty Cache and Hard Reload”字样。点击它,你就可以开始了。

【讨论】:

当浏览器中的 gmap 加载地图图块时,这对我来说当然有用,但是在填充 DOM 的其他区域后,地图图块会消失。切换到卫星视图加载了这些图块,但缺少叠加层等。上面记录的完整缓存清除工作完美,登录地图再次工作。 这正是我的问题,并由此处确切提及。谢谢!【参考方案2】:

我遇到了同样的问题。融合表格图层的地图结果页面的 CSS 与地图参数不对齐导致。我修复了 CSS,地图开始出现。

【讨论】:

以上是关于是啥导致 maps.googleapis.com/maps/vt 返回 400 错误?的主要内容,如果未能解决你的问题,请参考以下文章

phonegap + ionic 使用 Content-Security-Policy 加载 maps.googleapis.com,如何?

谷歌地图api訪问失败

为啥google apis显示不同的结果?

谷歌静态地图自定义标记

Google Maps Api 仅查找省份

Google Maps API当前位置不断更新