Google Maps Directions API:计算给定点是否位于路线上

时间:2018-05-05 11:43:17

标签: node.js google-maps google-maps-api-3

计算给定点是否在路径上,这是我到目前为止所尝试的:

const googleMapsClient  = require('@google/maps').createClient({
    key: 'KEY'
});

googleMapsClient.directions({
    origin: 'Bangalore, Karnataka',
    destination: 'Mumbai, Maharathra',
    mode: "driving",
}, function(err, response) {
    if (!err) {
        console.log(response);
    }
console.error("ERR", err);
})

此API返回路径详细信息。 有没有办法在Google Node.JS Client中获得isLocationOnPath(Android SDK中的方法)功能的相同功能。

1 个答案:

答案 0 :(得分:0)

Node.js Client for Google Maps Services没有任何几何函数,但作为替代方法,您可以通过以下方式使用Turf.jsmapbox/polyline

googleMapsClient.directions({
    origin: 'Bangalore, Karnataka',
    destination: 'Mumbai, Maharathra',
    mode: "driving",
})
.asPromise()
.then((response) => {
    let points = []
    response.json.routes[0].legs[0].steps.forEach( (step) => {
        polyline.decode(step.polyline.points).forEach( (point) => {
            points.push([point[1], point[0]])
        })
    })
    let linestring = turf.lineString(points)
    let snapped = turf.nearestPointOnLine(linestring, turf.point([77.59464, 12.9726]))
    console.log(snapped.properties.dist)
})
.catch((err) => {
    console.log(err);
})

因此,如果snapped.properties.dist< =某个值,则意味着该点属于具有给定容差的路径。