这是我提出的另一个问题的后续问题,没有得到任何答案。我做了更多的研究,并想出了我需要做的事情,但不幸的是我无法弄清楚如何去做。
我有一张Google的绘图工具设置地图。用户需要能够绘制多边形以定义交付区域。将每个新点添加到多边形(完成之前)后,该线应自动跟随地图上的道路,以便从上一个点到新点。结果应该允许延迟绘制的多边形与道路完全匹配,而不需要付出额外的努力。
Here is my in-progress Codepen
我之前使用Roads API snap-to-road 功能,但发现它不够准确。我需要从很远的缩放级别绘制路径,并且仍然可以捕捉到他们可以找到的任何道路。
这是最相关的函数,它应该在每个新点的创建上运行(现在它附加到polygoncomplete
事件,因为我还没有想到它):
function runSnapToRoad(poly, path, color) {
console.log('Run snap to road');
var pathValues = [];
for (var i = 0; i < path.getLength(); i++) {
pathValues.push(path.getAt(i).toUrlValue());
}
service.route({
origin: path.getAt(path.getLength() - 1),
destination: pathValues.join('|'),
travelMode: google.maps.DirectionsTravelMode.DRIVING
}, function(result, status) {
if (status == google.maps.DirectionsStatus.OK) {
for (var i = 0, len = result.routes[0].overview_path.length;
i < len; i++) {
path.push(result.routes[0].overview_path[i]);
}
}
});
}
简而言之,我的问题如下:
如何获取先前添加的点和最近添加的不完整多边形点,并将它们用作路线服务的“原点”和“目的地”?