手动插入JSON可正常调用Google Maps API,Python传入同JSON报错INVALID_REQUEST
解决Google Maps API地理编码INVALID_REQUEST问题(模板传JSON场景)
先排查渲染后的实际JSON格式
- 打开浏览器开发者工具(F12),切换到Elements标签,找到包含
location_json的脚本代码块,对比渲染后的JSON和你手动写的版本:- 检查是否存在多余的转义字符(比如
\"被转成了\\\") - 确认数组、对象的括号是否完全配对,有没有遗漏逗号
- 确保所有地址字符串都用双引号包裹(Google Maps API要求地址必须是标准JSON字符串格式)
- 检查是否存在多余的转义字符(比如
调整模板渲染逻辑
- 若使用Jinja2模板,先尝试去掉
|safe过滤器,只保留{{ location_json|tojson }},因为safe可能跳过必要转义,破坏JSON结构 - 如果
tojson过滤器仍有问题,直接在Python后端完成JSON序列化,再传入模板:
模板中直接使用:import json # 假设location是你的地点数据列表 location_json = json.dumps(location, ensure_ascii=False) # 直接传递序列化后的字符串到模板 return render_template('map_page.html', location_json=location_json)<script> const locations = {{ location_json|safe }}; // 后续调用Google Maps API的逻辑 </script>
验证地址格式合规性
- 检查地址是否包含特殊字符(如
&、#),确保这些字符被JSON正确转义 - 地址尽量完整(包含城市、国家等信息),减少模糊匹配引发的API报错
按顺序展示地点与路线规划要点
- 遍历渲染后的
locations数组,依次调用地理编码接口,注意控制请求频率(避免触发API限流) - 路线规划时,将地理编码得到的经纬度按数组顺序作为途经点,通过Directions API的
waypoints参数传递
内容的提问来源于stack exchange,提问作者Priniotis
相关产品推荐
相关产品推荐

