MySQL: получить запись в полигоне

mysql sql google-maps polygon spatial

853 просмотра

1 ответ

96 Репутация автора

У меня есть таблица в базе данных с последующим атрибутом широты и долготы

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');

На карте Google у меня есть функция ломаной линии, где пользователь может нарисовать ломаную линию, чтобы мы могли показать все компании, которые находятся в этом многоугольнике.

Вот изображение карты

введите описание изображения здесь

Google может дать массив широты и долготы введите описание изображения здесь

Как я могу запросить, чтобы получить все записи из базы данных, которая находится в пределах полигона рисования?

Автор: Naseer Panhwer Источник Размещён: 18.07.2016 05:55

Ответы (1)


0 плюса

322 Репутация автора

Вы должны найти это, если вы напишите свой запрос как:

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))'));

тогда это должно работать.

Автор: apurav gaur Размещён: 27.02.2017 02:04
Вопросы из категории :
32x32