Для того, чтобы вывести метки в радиусе 10 метров от вашего местоположения, вам понадобится использовать специальные географические функции и операторы языка SQL.
В большинстве современных СУБД, таких как PostgreSQL, MySQL или SQL Server, имеются встроенные географические типы данных и функции для работы с ними. В данном ответе я предположу, что вы используете PostgreSQL, так как он является одной из самых популярных СУБД с поддержкой географических данных.
1. Создайте таблицу "метки" с полями "id" (первичный ключ), "название", "широта", "долгота". Например:
CREATE TABLE markers ( id SERIAL PRIMARY KEY, name VARCHAR(255), latitude NUMERIC, longitude NUMERIC );
2. Вставьте в таблицу некоторые метки с указанием их координат. Например:
INSERT INTO markers (name, latitude, longitude) VALUES ('Метка 1', 55.7547, 37.6214), ('Метка 2', 55.7537, 37.6226), ('Метка 3', 55.7553, 37.6238);
3. Создайте географический индекс на столбец с координатами:
CREATE INDEX markers_location_idx ON markers USING GIST (POINT(longitude, latitude));
4. Затем, чтобы найти все метки в радиусе 10 метров от вашего текущего местоположения, вы можете использовать функцию ST_DWithin().
SELECT id, name, latitude, longitude FROM markers WHERE ST_DWithin(POINT(longitude, latitude)::geography, ST_MakePoint(<your_longitude>, <your_latitude>)::geography, 10);
Где <your_longitude>
и <your_latitude>
это широта и долгота вашего текущего местоположения.
Функция ST_MakePoint() используется для создания географической точки из указанных координат, а ST_DWithin() возвращает true, если точка находится внутри указанного радиуса.
5. Выполнив запрос, вы получите все метки, которые находятся в радиусе 10 метров от вашего текущего местоположения. Результат будет содержать id, название, широту и долготу меток.
Это основной пример, который позволит вам выводить метки в радиусе 10 метров от вашего текущего местоположения. Однако, при решении реальных задач, возможно, потребуется уточнение и изменение этого примера в соответствии с требованиями вашего проекта или другими деталями вашей задачи.