【问题标题】:Google Maps Roads API: Making 'snap to road' more forgivingGoogle Maps Roads API:让“快速上路”更加宽容
【发布时间】:2015-08-19 07:58:40
【问题描述】:

我的任务是使用 Google Maps API 创建一个工具,餐厅可以使用它来定义送货区域。这是进度:http://codepen.io/keithpickering/pen/NqdzKO

用户应该能够绘制一个多边形,然后它会捕捉到附近的道路以确保准确性。这运行得相对较好,除了谷歌内置的快速道路功能......嗯,有点糟糕。如果你的点不够接近,它要么拒绝捕捉到任何东西,要么只是做出一些奇怪的 janky line。

我需要的是让工具在截断道路时更加“宽容”;换句话说,某人应该能够从任何缩放距离懒惰地绘制几乎任何类型的多边形,并且应该强制线条捕捉到一条道路或另一条道路。

这是我用来捕捉的部分代码:

...

// 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 并使用路线服务寻求更个性化的解决方案?有没有人有任何想法?感谢您的所有帮助。

【问题讨论】:

  • 如果您正在考虑替代方案,here 的答案可能会有所帮助。它使用方向而不是 Roads api。
  • @Andy 这是我想做的事情,但由于这个例子没有使用绘图工具,它不能开箱即用。如何获取“polygoncomplete”事件的“origin”和“destination”值?

标签: javascript jquery google-maps google-maps-api-3 google-roads-api


【解决方案1】:

我认为你可以尝试从 Microsoft Snap 点到 road api。它提供了高达 1000 个点的非常高的精度,而 GPS 点之间的距离可达 2.5 公里。

https://docs.microsoft.com/en-us/bingmaps/rest-services/routes/snap-points-to-roads?redirectedfrom=MSDN

【讨论】:

    【解决方案2】:

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

    在某些道路附近徒手绘制的路径可能不是有效的路径(尤其是从远处缩放级别),因此 API 没有找到一条很有可能是真实的路径。

    如果您愿意,可以在issue tracker 上请求此功能。

    【讨论】:

      猜你喜欢
      • 2016-03-21
      • 1970-01-01
      • 2015-11-12
      • 1970-01-01
      • 2015-07-09
      • 2011-09-13
      • 1970-01-01
      • 2018-11-07
      • 1970-01-01
      相关资源
      最近更新 更多