Отображение маркеров на основе радиуса без начальной точки из базы данных MySQL - PullRequest
0 голосов
/ 18 апреля 2020

Как показано на рисунке, у меня есть база данных со столбцами имени, адреса, широты, долготы, даты и недели.

Please refer image for a better understanding

Я пытался использовать этот запрос ( 1-е местоположение в качестве начальной точки):

SELECT 
    id,
    (6371 * ACOS(COS(RADIANS(3.086349)) * COS(RADIANS(lat)) * COS(RADIANS(lon) - RADIANS(101.701172)) + SIN(RADIANS(3.086349)) * SIN(RADIANS(lat)))) AS distance
FROM
    locations
HAVING distance <= 0.5
ORDER BY distance
LIMIT 0 , 20

Это покажет мне записи в ЗЕЛЕНОМ, но также включает в себя запись в КРАСНОМ, которая находится в пределах того же радиуса, но с другой недели (так что я знаю Запрос не работает).

Я также пробовал этот запрос (1-е место в качестве начальной точки):

SELECT 
    id,
    (6371 * ACOS(COS(RADIANS(3.086349)) * COS(RADIANS(lat)) * COS(RADIANS(lon) - RADIANS(101.701172)) + SIN(RADIANS(3.086349)) * SIN(RADIANS(lat)))) AS distance
FROM
    locations
WHERE
    week = 13
GROUP BY id
HAVING distance < 0.5
ORDER BY distance
LIMIT 0 , 20;

Возвращает все записи в ЗЕЛЕНОМ только без записи в КРАСНОМ, но не возвращает показать записи в ОРАНЖЕ.

Я хочу показать все маркеры на картах Google за 13-ю неделю, которые находятся в пределах RADIUS <или = до 500 метров от любого другого маркера с этой недели </strong> (имеется в виду он должен показывать все записи в ЗЕЛЕНОМ и ОРАНЖЕВОМ, но не в КРАСНОМ), так как есть другие маркеры, которые находятся близко друг к другу (те, которые оранжевого цвета, находятся в пределах 500 метров друг от друга, но на расстоянии более 500 метров от другого кластера); они не будут отображаться, если я установлю начальную точку.

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

Каждый пост То, что я прочитал здесь в течение прошлой 1 недели, показывает объяснение с отправной точкой.

Любая помощь будет принята с благодарностью. Спасибо.

MySQL: версия 15.1 Distrib 10.3.17-MariaDB, для Linux (x86_64) с использованием readline 5.1

Текст БД:

CREATE TABLE IF NOT EXISTS `locations` (  
  `id` int(10) NOT NULL AUTO_INCREMENT,  
  `name` varchar(150) NOT NULL,  
  `address` varchar(255 NOT NULL,  
  `lat` float(10,6) NOT NULL,
  `lon` float(10,6) NOT NULL,  
  `date` date NOT NULL,
  `week` int(2),  
  PRIMARY KEY (`id`)  
 ) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1;


INSERT INTO `locations` (`id`, `name`, `address`, `lat`, `lon`, `description`, `date`, `week`) VALUES 
('1', 'Vantage Point Condominium', 'Jalan 4/125, Taman Desa Petaling, 57100, Kuala Lumpur, Malaysia', '3.086349', '101.701172', 'My Current place of living.', '2020-03-29', '13');
('2', 'Old Mans House', '14 Jalan SS3/50, Kelana Jaya, 47300, Petaling Jaya Selangor, Malaysia', '3.093787', '101.618103', 'My old place of living.', '2020-03-27', '13');
('3', 'KotaRaya Complex', '10 Jalan Tun Tan Cheng Lock, City Centre, 50050, Kuala Lumpur, Malaysia', '3.146026', '101.698051', 'Place to send money overseas.', '2020-03-25', '13');
('4', 'Plaza Salak Park', '2, Jalan 1/125e, Taman Desa Petaling, 57100 Kuala Lumpur, Malaysia', '3.084877', '101.705055', 'Shopping Mall.', '2020-03-26', '13');
('5', 'NSK Kuchai Lama', '43, Jalan Kuchai Maju 13, Kuchai Entrepreneurs Park, 58200 Kuala Lumpur, Malaysia', '3.084630', '101.691040', 'Wholesale Market.', '2020-03-28', '13');
('6', 'Al-Madinah International University', 'Pusat Perdagangan Salak II, No, 18-G, Jalan 2/125e, Taman Desa Petaling, 57100, Kuala Lumpur, Malaysia', '3.084320', '101.700447', 'University.', '2020-03-27', '13');
('7', 'Amadesa Resort Condominium', 'Jalan 5/125, Taman Desa Petaling, 57100, Kuala Lumpur, Malaysia', '3.084866', '101.702286', 'Condominium.', '2020-03-27', '13');
('8', 'Old Western Cow Boy Steak House', 'No. 30, Jalan 9/125d, Taman Desa Petaling, 57100 Kuala Lumpur, Malaysia', '3.082639', '101.703545', 'Western Food Restaurant.', '2020-03-28', '13');
('9', 'MacDonalds Kuchai Lama', 'Jalan 1/116B, Off, Jalan Kuchai Lama, Kuchai Entrepreneurs Park, 58200, Kuala Lumpur, Malaysia', '3.087819', '101.690094', 'Fast food outlet.', '2020-03-28', '13');
('10', 'Maybank Kuchai Lama', '1 & 3, Jalan Kuchai Maju 1, Kuchai Entrepreneurs Park, 58200, Kuala Lumpur, Malaysia', '3.091419', '101.689445', 'Local Bank.', '2020-03-26', '13');
('11', 'Nidoz Residences', 'No.22A, Jalan 2/125, Desa Petaling, 57100 Kuala Lumpur, Malaysia', '3.085217', '101.700150', 'New Condo with too much noise', '2020-03-21', '12');
('12', 'Terminal Bersepadu Selatan', 'Jalan Terminal Selatan, Bandar Tasek Selatan, 57100, Kuala Lumpur, Malaysia', '3.077946', '101.711288', 'Interstate Bus Terminal.', '2020-03-20', '12');

ALTER TABLE `locations`
  ADD PRIMARY KEY (`id`);

ALTER TABLE `locations`
  MODIFY `id` int(10) NOT NULL AUTO_INCREMENT,AUTO_INCREMENT=1;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...