Извикване на обекти спрямо координати

Здравей колеги и колежки :D
Имам малко тегав въпрос...
Имам база данни с добавени обекти,координати към тях и точен адрес, ето пример:
GPS: 42.697155,23.317985,
Адрес: България, Варна, бул. Сливница 192 ...
До тук всичко е ОК, но да речем че мойте координати са 40.697155,23.317945 и как мога да отсея всички обекти който са в радиус от 10км примерно ... без да се налага да извикам всички обекти от базата данни, и т.н ... а само тези който отговорят на критерия?
 
С каква БД работиш ?
Mongodb имаха вградена такава опция. За mysql / mariadb може би има някой плъгин ?
 
MySQL , към момента не ме притеснява да извиквам и всички обекти и след това чрез API-то на гугъл да се изчислява разстояние, но ме притеснява ако станат XX XXX обекта..
 
Ако не е необходима много голяма точност и прецизност, предлагам следния вариант:

$sql = "SELECT * FROM $db WHERE ABS(`obj_lng` - {$lng}) < $p_distance AND ABS(`obj_lat` - {$lat}) < $p_distance"

където:

obj_lng и obj_lat са клетките с координатите на всички обекти;

$lng и $lat са координатите на централната точка спрямо която търсиш обектите;

$p_distance - максималното разстояние (малко условно казано) на обектите спрямо централната точка. Това разстояние в метри и километри и зависи от много неща, включително и географската ширина. Трябва да се определи опитно.

Не правя реклама на фирмата, но на показаните линкове съм използвал този начин на изчисление. Въведени са координатите на различни обекти и се изчислява разстоянието до тях спряно координатите на имота. Пак уточнявам, разстоянията са приблизителни и опитно са настроени за географската ширина на България. Използваната стойност на $p_distance = 0.01. По разбираеми причини брокерите умишлено не въвеждат абсолютно точни координати.

https://bulrealty.net/649

https://bulrealty.net/0,9,1,1,0,0,23,4396,31,649
 
Последно редактирано:

Горе