query not taking index into account
First thing is that SQL_CALC_FOUND_ROWS is evil. Just do not use it as indexes can't always be used together with it.

As for the scond part of the issue, mysql can not use an index for two ordered queries. And I got 3 of them here - lat and lon range scans and a time sorting. 

See https://stackoverflow.com/questions/4083632/can-mysql-use-index-in-a-range-query-with-order-by