gpt4 book ai didi

javascript - 根据用户位置查询数据库值

转载 作者:可可西里 更新时间:2023-11-01 07:30:35 25 4
gpt4 key购买 nike

如何根据用户的位置值对数据库执行查询?该应用程序是使用 HTML5、CSS、Javascript 和 PHP 开发的,具有一个包含列的数据库,如下表所示。

database structure

在 html 网页上,收集用户地理坐标并将其与数据库中的值进行比较,以根据数据库中的地点找到距离用户最近的地点。

请告诉我如何实现这一目标。任何示例/ sample 将不胜感激。

最佳答案

有一个问题比较各种空间数据库的功能,GIS: PostGIS/PostgreSQL vs. MySql vs. SQL Server?,其中 Postgis 明显胜过 MySQL。

无论您使用 MySQL 还是 Postgis,如果可以的话,您最好将纬度和经度值存储为几何/地理(点),作为可用于查找附近事物的函数,ST_DistanceST_Distance_Sphere 和更晦涩的 <-> operator ,请参阅 Find n Nearest Neighbors for given Point using PostGIS? (例如用法)直接在几何/地理列上工作。更重要的是,您可以添加一个空间索引,这些函数需要它才能正常工作,这将大大优于对单独索引的纬度和经度列的搜索(这将取决于表的大小,但将随着表大小的增长而增长),

在 Postgis 中,您可以将经纬度转换为几何图形:

alter table mytable add column geom (Geometry, 4326);
update mytable set geom = ST_SetSRID(ST_MakePoint(lon, lat), 4326)
create index ix_spatial_mytable_geom on mytable using gist(geom);

此时,您将能够使用上述链接中的任何示例非常高效地查询以查找其他点附近的点。

你可以在 MySQL 中做类似的事情,尽管它不支持空间引用系统,即上面的 4326,这意味着纬度/经度,并且它缺少 ST_MakePoint 函数,所以你需要使用 STGeomFromText 并连接纬度/经度一起构成一个点。正如 Claudio 和其他人所说,它还可以在平面坐标中执行所有操作,这不是 Postgis 的问题。

对于一个冗长且有点离题的回答,我深表歉意,但是在大量数据(MySQL、SQL Server 和 Postgres/GIS)的数据库之间进行了各种迁移,并且在途中犯了很多错误,我希望我能帮助你朝着正确的方向前进(如果您想开始使用 Postigs 拥有的一些其他空间功能,并添加一些 future 证明)。

关于javascript - 根据用户位置查询数据库值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25170175/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com