Решение этого тестовое задания можно легко нагуглить.
Например первые две задачи сводятся в индексации данных на плоскости т.е. к построению r-tree дерева
google -> Leaflet r-tree index
http://makinacorpus.github.io/Leaflet.LayerIndex/
для последующих есть готовые плагины примеры и документация
к примеру
http://leafletjs.com/plugins.html#time--elevation