/ / MySQL: pobierz rekord w poligonie - mysql, sql, google-maps, polygon, przestrzenny

MySQL: pobierz rekord w poligonie - mysql, sql, google-maps, polygon, przestrzenny

Mam tabelę w bazie danych z następującymi atrybutami szerokości i długości geograficznej

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

Na mapie google mam funkcję polilinii, w której użytkownik może narysować polilinię, dzięki czemu możemy pokazać wszystkie firmy, które znajdują się w tym wielokącie.

Oto obraz mapy

wprowadź opis obrazu tutaj

Google może podawać tablicę długości geograficznej wprowadź opis obrazu tutaj

Jak mogę wykonać zapytanie, aby pobrać wszystkie rekordy z bazy danych, która znajduje się w obszarze rysowania wielokątów?

Odpowiedzi:

0 dla odpowiedzi № 1

Powinieneś znaleźć to, jeśli napiszesz zapytanie jako:

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

to powinno działać.