我正在使用谷歌地图中的纬度/经度坐标。
我有两行:
- A 线:48.31508162629726、-2.591741396838972 至 48.40216156645915、-2.2218462112093404
- B 线:48.383816077371215、-2.274292940053768 至 48.66103546935337、-1.7066197241571377
然后我使用以下公式找到它们交叉的点。
var XAsum = A.LngStart - A.LngEnd;
var XBsum = B.LngStart - B.LngEnd;
var YAsum = A.LatStart - A.LatEnd;
var YBsum = B.LatStart - B.LatEnd;
var LineDenominator = XAsum * YBsum - YAsum * XBsum;
if(LineDenominator == 0.0)
return false;
var a = A.LngStart * A.LatEnd - A.LatStart * A.LngEnd;
var b = B.LngStart * B.LatEnd - B.LatStart * B.LngEnd;
var x = (a * XBsum - b * XAsum) / LineDenominator;
var y = (a * YBsum - b * YAsum) / LineDenominator;
这告诉我这些线确实交叉并返回 x 和 y 值。
但是,当我绘制返回的点时,它与真正的交点有偏移(不多)。
有没有更好的和一样快的算法我可以使用它来返回正确的交点?
它需要快速,因为我正在迭代大量行(~1000)。
编辑:请注意,这给了我大约 7.5 米的误差偏移