javascript - 将限制拖放到 Angular

标签 javascript google-maps math

背景
我有一个 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/

相关文章:

algorithm - 是否有可能比 O(n log n) 更好地计算数字列表的中位数?

C++ 开普勒和牛顿定律

javascript - 获取访问者的纬度和经度并显示它的谷歌地图

javascript - 如何打印出我的个人对象构造函数中的所有人?

javascript - 更改Google街景API的图像日期

qt - QList<int> 的数学联合?

javascript - AJAX、子域和 SSL

javascript - CanvasJS:使用 data.php、json 编码和 ajax(带宽米)使图表动态化

ios - 适用于 iOS 的 Delphi Google Maps SDK

android - 停止 OnMyLocationChangeListener