查找折线上的 (lat,lng)

Find (lat,lng) which is on a polyline

我需要在绘制的折线上找到坐标 (lat,lng) 以在那里显示工具提示,而不是我用来绘制路径的坐标。 谁能帮帮我? :(

您面临的问题是您正在使用测地线参数,该参数强制按照地球的曲率绘制多段线,但是,当您决定在何处绘制工具提示时,您决定 跟随走直线和距离

为了避免重复造轮子太多,我从另一个 JS 库中搜集了 this piece of code。 jsfiddle 不允许我将它用作外部引用并且它不在任何 CDN 上,所以直接复制面食的借口。替代方案意味着完全重新实现 Vincenty 方程的解。

从那里开始,重新编写您的函数以获得要点是一件简单的事情:

var getPoint = function(path, percentage) {
  var p1 = new LatLon(path.getAt(0).lat(), path.getAt(0).lng());
  var p2 = new LatLon(path.getAt(1).lat(), path.getAt(1).lng());
  var bearing = p1.bearingTo(p2);
  var d = p1.distanceTo(p2);
  var o = p1.destinationPoint(d * percentage, bearing);
  return new google.maps.LatLng(o.lat, o.lon);
};

结果:http://jsfiddle.net/E45Su/70/

请注意,这 严重依赖 google 映射 API,因为它需要 MVCArray 作为路径输入。