Здравствуйте!
Почему-то нигде не смог найти обсуждение этого, как мне кажется, первоочередного вопроса.
Пусть в БД хранится, скажем, 1000 меток. Как быстро выбрать ближайшие, чтобы отобразить их на том участке карты который смотрит пользователь?
Единственное что нашел: считать расстояние между центром карты и каждой(!) хранящейся точкой:
SELECT address, name, lat, lng, ( 6371 * acos( cos( radians('%s') ) * cos( radians( lat ) )
* cos( radians( lng ) - radians('%s') ) + sin( radians('%s') ) * sin( radians( lat ) ) ) ) AS distance
FROM markers HAVING distance < '%s' ORDER BY distance LIMIT 0, 20
Или надо капать в сторону кластеризации? Как правильно?