image.png
求 cy 可以根据: len / a到b距离 = a到c垂直距离 / a 到 b的垂直距离,首先求a到b的距离,求平方根公式如下:
r = sqrt((x1- x2)*(x1 - x2) +(y1 - y2)*(y1 - y2));
然后计算cy的值
cy = (len*(y2-y1))/r + y1;
同理,可以计算出cx的值:
cx = (len*(x2-x1))/r + x1;
// 计算点到指定点偏移固定距离的坐标点
// a : 起始点
// b : 终点
// len : 偏移距离
function getNewRollPoint(a, b, len) {
var r = Math.sqrt((a.Longitude - b.Longitude) * (a.Longitude - b.Longitude) + (a.Latitude - b.Latitude) * (a.Latitude - b.Latitude));
var cx = (len * (b.Longitude - a.Longitude)) / r + a.Longitude;
var cy = (len * (b.Latitude - a.Latitude)) / r + a.Latitude;
return {
Longitude: cx,
Latitude: cy
}
}
距离值单位要根据经纬度规则定义。
比如C点到A点,相差10米,则
this.getNewRollPoint(a,b,10/100000)
根据经纬度规则:第五位小数是精确到米,所以用 10/100000
1675329522381.png
网友评论