我试图使用带有getMidPoint函数的多边形来查找三个不同位置的三个中点。同时尝试在getMidPoint函数中返回数组。数组值未分配给midPoints变量,我在终端中无法读取未定义的属性“ length”作为错误
var midPoints = getMidPoint(Location1, Location2)
// Directions API
var i = 0;
var array = [];
function getMidPoint(a, b) {
console.log("I am working...")
clientMap.post(config_KEYS.DIRECTION_API + a + "&destination=" + b + "&key=" + config_KEYS.GOOGLE_API_KEY + "&departure_time=" + timeStamp + "", function (googleDirectionData, error) {
if (googleDirectionData.status == "ZERO_RESULTS" | googleDirectionData.status == "INVALID_REQUEST") {
res.status(400).send(googleDirectionData)
}
else {
var polyline = googleDirectionData.routes[0].overview_polyline.points
var decoded = decode(polyline)
var n = Math.round(decoded.length / 2)
var obj = {}
obj.latitude = decoded[n].latitude
obj.longitude = decoded[n].longitude
array.push(obj)
}
})
return array
}
if (midPoints && midPoints.length == 1) {
console.log("durationpointDat dfggdfg"+ midPoints.length)
var durationpointData2 = getMidPoint(Location2, Location3)
}
else {
if (midPoints.length == 2) {
console.log("durationpointData fdf"+ midPoints.length)
var durationpointData3 = getMidPoint(Location3, Location1)
}
else{
res.status(200).json(array)
}
}
建议将不胜感激。
答案 0 :(得分:1)
正如我在ctrl + c
中的代码中看到的那样,您正在调用google map API。这是getMidPoint
调用方式,表示在完成Google API调用之前,您的代码正在执行下一个代码,因此在asynchronous
中,您将无法定义。
表示您要在完成Google Map API之前返回数组。您必须创建一个回调并将数据传递到其中。
您可以按照以下示例进行操作。
midPoints
答案 1 :(得分:0)
尝试在函数中声明var数组并返回它。不在全球范围内