从Google Map API传递JSON数据时,为什么会出错?

时间:2018-09-26 00:03:48

标签: javascript json google-maps flask

def map():
if request.method == 'POST':
    key = "googleMapAPIkey"
    orilist = request.form['from'].split()
    deslist = request.form['to'].split()
    mode = request.form.get('traffic_mode')
    ori = ""
    des = ""
    for word in orilist:
        ori = ori + word + "+"
    ori = ori[:-1]
    for word in deslist:
        des = des + word + "+"
    des=des[:-1]
    url = "https://maps.googleapis.com/maps/api/directions/json?origin="+ori+\
          "&destination="+des+"&key="+key
    print ori,des,mode,url
    r = requests.get(url)
    direction1 = r.json()

    markerArray = []
    print json.dumps(direction1)
    return render_template('googlemap.html', direction1=json.dumps(direction1), ori=request.form['from'], des=request.form['to'], mode=mode,method='POST')
else:
    print request.method
    return render_template('index.html',method='GET')

这是模板脚本

var routes = {{ directions1|tojson }};
var start_point = {{ ori }};
var end_point = {{ des }};
var mode = {{ mode }};
function initMap() {
    var map = new google.maps.Map(document.getElementById('map'), {
        center: {lat: 42.880230, lng: -78.878738},
        zoom: 8
    });
    var renderer = new google.maps.DirectionsRenderer();

    var request = {
    travelMode: mode,
    origin: start_point,
    destination: end_point
    };
    renderDirections(map,routes,request)
}

我使用了google api来获取响应,并尝试将此值传递给客户端。我确定我得到了JSON格式的字符串,当我尝试打开网络时, “ TypeError:未定义的不是JSON可序列化的”

1 个答案:

答案 0 :(得分:0)

您正在尝试从尚未定义的变量中获取路线。

没有 CvException [org.opencv.core.CvException: cv::Exception: /home/maksim/workspace/android-pack/opencv/modules/core/src/copy.cpp:382: error: (-215) size() == mask.size() in function void cv::Mat::copyTo(cv::OutputArray, cv::InputArray) const ] 来自后端。尝试directions1。 (或在direction1中重命名,以便它们匹配)。


最佳做法:复制/粘贴变量名。即使您输入错误,您的代码仍然可以使用。

此外,还应注意错误文本本身:“未定义为... 的意思恰恰是:您传递的而不是JSON可序列化对象 ...都是未定义的

看到此错误的第一个操作是:转到render_template(),双击变量名称以选择它,然后将其复制/粘贴到js中。即使“看起来”完全相同。