拖放限制到角度

时间:2015-05-10 07:52:13

标签: javascript google-maps math

背景
我有一个Google地图应用程序,其中一个人在尽可能少的点击中绘制一个矩形,解决方案是在中心绘制一条线并通过单击并拖动边缘向外展开。

问题
我知道地图上两个纬度/长度之间的角度,形成我上面提到的线,所以我可以在该线周围绘制一个矩形,很容易。知道原始线的角度我需要限制平行于原始线的线拖动到相同的角度,但我不知道从哪里开始,我如何限制这两条线的拖动,以便它们保持在任何时候都是平行的?

1 个答案:

答案 0 :(得分:0)

我忘记了简单的几何/代数..这样做的方法是在构成直线的两个顶点上使用标准距离公式D = SQRT((x1 - x2)² + (y1 - y2)²),然后通过下面orthogonal matrix转换这些坐标

| 0 -1 | -> x axis | 1 0 | -> y axis

您还需要使用标准距离公式来获取鼠标与旧行之间的距离,以计算OFFSET可能相等的内容。

值得注意的是,您需要使用Google地图几何库进行此操作,并在计算之前将每个LatLng对转换为Point,然后转换回LatLng当你准备画线时。

from.x = x1 + OFFSET * (y2 - y1) / D from.y = y1 + OFFSET * (x1 - x2) / D to.x = x2 + OFFSET * (y2 - y1) / D to.y = y2 + OFFSET * (x1 - x2) / D