MySQL:在多边形内获取记录

标签 mysql sql google-maps polygon spatial

我在数据库中有一个表,其中包含纬度和经度属性

CREATE TABLE `companies` (
  `ID` int(11) NOT NULL,
  `title` varchar(255) NOT NULL,
  `latitude` decimal(12,8) NOT NULL,
  `longitude` decimal(12,8) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;


INSERT INTO `companies` (`ID`, `title`, `latitude`, `longitude`) VALUES 
(NULL, 'John and SOns', '25.29064622', '55.368462502'), 
(NULL, 'Evas', '25.28862850', '55.40107816');

在谷歌地图上,我有一个折线功能,用户可以在其中绘制一条折线,因此我们可以显示该多边形内的所有公司。

这是 map 图片

enter image description here

Google 可能会给出一个纬度经度数组 enter image description here

我如何查询以从位于绘制多边形内的数据库中获取所有记录?

最佳答案

您应该发现,如果您将查询编写为:

select ID,title from companies where st_within(point(companies.longitude,companies.latitude),  ST_GeomFromText('Polygon((75.80278873443604 26.863847231536703, 75.79540729522705 26.85136594544373, 75.81798076629639 26.851595674802315,75.80278873443604 26.863847231536703))'));

那么应该可以工作。

关于MySQL:在多边形内获取记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38429452/

相关文章:

mysql - 在查询中使用 IGNORE 时,MySQL 是否仍然会出现死锁错误?

mysql-workbench - MySQL 5.6无法备份数据库

php - 使用 PHP 从文件夹中获取图片名称 - 然后在其中查找数字,然后分别将每个数字插入 MySQL 表中

MySQL 查询 DISTINCT,COUNT

sql - 不同模式中的触发器

javascript - 将天气小部件嵌入到 Google map 的信息窗口中

mysql - 错误 : Integrity constraint violation: 1052 Column

sql - 递归 SQL 语句(PostgreSQL 9.1.4)

iphone - 如何计算 objective-c 中两个坐标的距离?

android - 谷歌地图绘制路线更新运动