MySQL:在多边形内获取记录

时间:2016-07-18 05:55:43

标签: 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');

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

这是地图图片

enter image description here

Google可能会提供一系列纬度经度 enter image description here

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

1 个答案:

答案 0 :(得分:0)

如果您将查询编写为:

,您应该会发现
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))'));

然后应该工作。