计算给定点是否在路径上,这是我到目前为止所尝试的:
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中的方法)功能的相同功能。
答案 0 :(得分:0)
Node.js Client for Google Maps Services没有任何几何函数,但作为替代方法,您可以通过以下方式使用Turf.js和mapbox/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< =某个值,则意味着该点属于具有给定容差的路径。