【问题标题】:Draw polygon on google map and query item located in that area在谷歌地图上绘制多边形并查询位于该区域的项目
【发布时间】:2018-05-23 13:22:27
【问题描述】:

我有一个基于网络的仪表板,其中包含 7 天内车辆移动的经纬度信息。在这种情况下,地图层是谷歌地图,车辆移动的数据存储在 PostgreSQL 中。用户想要做的是在特定区域上绘制一个多边形,并触发一个查询,该查询将显示所有经过该区域的车辆。我已经有了地图和所有车辆的 lon lat 数据,有没有办法使用 json 或 javascript 来做到这一点,而无需将多边形上传到数据库?

我知道如果我将多边形上传到数据库中,Postgress 可以做到这一点。为了安全和数据管理,我不想将多边形上传到 PostgreSQL。我想绘制多边形并使用 JavaScript 触发查询。

【问题讨论】:

    标签: google-maps cross-browser gis


    【解决方案1】:

    只需使用静态几何体,如

    SELECT *
    FROM <points_table> AS pt
    WHERE ST_Intersects(pt.geom, <static_geometry);
    

    &lt;static_geometry&gt; 是其中之一

    并将传输的输入坐标解析到函数中(注意每个函数的不同坐标顺序)。仍然不需要上传,因为这些函数只接受字符串格式的输入,所以对可能的SQL injections采取通常的预防措施。
    几何输出有等效的功能(ST_As&lt;Format&gt;,例如ST_AsGeoJSON)。

    如何最好地收集、传输和解析从客户端到服务器再到 DB 的多边形坐标取决于您的设置。

    【讨论】:

    • 非常感谢。我想出了一个解决办法。使用 google containsLocation() 我可以处理从后端传递的数据并在谷歌地图上生成图表。我试图避免将多边形发送到后端。我认为也可以在 javascript 查询中使用 postgresql 函数。
    猜你喜欢
    • 2012-02-23
    • 1970-01-01
    • 1970-01-01
    • 2012-05-31
    • 2017-11-18
    • 2020-06-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多