Или вы плохо объяснили или первое.
Есть у вас событие клик на маркер. Вот внутри него ... генерируете ещё пачку маркеров и запоминаете их. При очередном клике, удаляете запомненные и генерируете новые.
SELECT * FROM
(SELECT id, 3 AS rank FROM mail WHERE subject like '%query%'
UNION ALL
SELECT id, 1 AS rank FROM mail WHERE message like '%query%') AS t
ORDER BY rank DESC
Фильтруете из своей базе ответ по границе видимой части карты и выбранному типу объекта, всё же элементарно. Так же запрашиваете эти данных и по кнопке поиск и при движении карты, изменение масштаба, да хоть после пчиха пользователя :)
На запрос возвращаете геометрию объекта и показываете его.
Другое дело, что кроме OpenStreetMap вы эту геометрию ни где не получите. Да и там реки мало кого интересуют и состояние рек России далеко от финала.
Почему вы метку ставите в центре карты, а ведь она всё ещё в старом месте и panTo с анимацией не начал даже работать. Надо так же использовать destinations[pos].
Если вы не используете пространственную БД то самое время на неё перейти.
Сравнивает две геометрии и проверяет находятся ли они ближе чем указанное число единиц - postgis.net/docs/ST_DWithin.html
Ни чего не понятно, какие координаты для вас привычны и что вы вообще там увидели?
С преобразованием линии тоже не совсем понятно, ну в яндексе по-другому метод для создания линии называется, параметры-то там одни - координаты точек.