Google地图道路API:使"贴近道路"更加宽容。

4
我被指派使用Google Maps API创建一个工具,以便餐厅可以用来定义送餐区域。这是进展情况:http://codepen.io/keithpickering/pen/NqdzKO 用户应该能够绘制一个多边形,之后它将会自动吸附到附近的道路以提高准确性。这个功能相对而言运作得很好,除了Google内置的吸附到路线功能有点不足之外。如果您的点不够接近,它要么会拒绝吸附到任何东西,要么就会生成一些奇怪的折线。
我需要的是这个工具在吸附到路线时更加“宽容”,换句话说,某人应该能够从任何缩放距离上懒散地绘制任何类型的多边形,而线条应该被强制吸附到一条或另一条道路。
这是我正在使用的代码部分:
...

// Snap polygon to roads
  placeIdArray = [];
  runSnapToRoad(poly, path, color);
});

// Snap a user-created polyline to roads and draw the snapped path
function runSnapToRoad(poly, path, color) {
  var pathValues = [];
  for (var i = 0; i < path.getLength(); i++) {
    pathValues.push(path.getAt(i).toUrlValue());
  }

  $.get('https://roads.googleapis.com/v1/snapToRoads', {
    interpolate: true,
    key: apiKey,
    path: pathValues.join('|')
  }, function(data) {
    processSnapToRoadResponse(data);
    drawSnappedPolyline(poly, path, color);
  });
}

// Store snapped polyline returned by the snap-to-road method.
function processSnapToRoadResponse(data) {
  snappedCoordinates = [];
  placeIdArray = [];
  for (var i = 0; i < data.snappedPoints.length; i++) {
    var latlng = new google.maps.LatLng(
        data.snappedPoints[i].location.latitude,
        data.snappedPoints[i].location.longitude);
    snappedCoordinates.push(latlng);
    placeIdArray.push(data.snappedPoints[i].placeId);
  }
}

是否有必要放弃Roads API并使用方向服务进行更定制化的解决方案?是否有人有任何想法?感谢任何和所有的帮助。


如果您正在考虑替代方案,这里的答案可能会有所帮助。它使用方向而不是道路API来进行折线捕捉。 - Andy
@Andy 这是我想做的事情,但由于此示例未使用绘图工具,因此无法直接使用。我如何在“polygoncomplete”事件中获取“起点”和“终点”值? - Keith Pickering
2个回答

2

0

很遗憾,目前的API无法实现这一点。该API旨在纠正实际穿越道路的路径,并考虑因素,如允许的交通方向(即单行道),有效转弯和提供的点的顺序。

在一些道路附近自由绘制的路径可能不是有效的路线(特别是从远处缩放级别),因此API没有找到具有高概率真实性的路径。

如果您愿意,可以在问题跟踪器上请求此功能。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接