背景
我有一个 Google map 应用程序,人们需要在尽可能少的点击次数中绘制一个矩形,解决方案是在中心画一条线,然后通过单击并拖动边缘向外扩展。
问题
我知道 map 上形成我上面提到的线的两个纬度/经度之间的 Angular ,因此我可以围绕该线绘制一个矩形,很容易。知道原始线的 Angular ,我需要限制与原始线平行的线的拖动到相同的 Angular ,但我不知道从哪里开始,如何限制这两条线的拖动以使它们保持不变始终并行?
最佳答案
我忘记了简单的几何/代数..执行此操作的方法是使用标准距离公式D = SQRT((x1 - x2)² + (y1 - y2)²)
构成这条线的两个顶点,然后通过下面的 orthogonal matrix 变换这些坐标
| 0 -1 | 0 -1 -> x 轴
| 1 0 | 1 0 -> y 轴
您还需要使用标准距离公式来获取鼠标和旧线之间的距离,以计算 OFFSET
可能等于的值。
值得注意的是,您需要为此使用 Google map 几何库,并在计算之前将每个 LatLng
对转换为 Point
,然后再转换回 LatLng
当您准备好绘制线条时。
from.x = x1 + 偏移 * (y2 - y1)/D
from.y = y1 + 偏移 * (x1 - x2)/D
to.x = x2 + 偏移 * (y2 - y1)/D
to.y = y2 + 偏移 * (x1 - x2)/D
关于javascript - 将限制拖放到 Angular ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30149008/