首页 > 解决方案 > 在谷歌地图上绘制多边形并查询位于该区域的项目

问题描述

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

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

标签: google-mapscross-browsergis

解决方案


只需使用静态几何

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

哪里<static_geometry>会是其中之一

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

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


推荐阅读