我与纬度的工作/经度坐标在谷歌地图。
我有两条线路:
- 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米偏移