Você precisa ordenar os resultados e definir um limite.
Assumindo que datetime é o que você queria pedir:
$query = "
SELECT
lat,
lng,
DATE_FORMAT(datetime,'%W %M %D, %Y %T') AS datetime
FROM markers1 WHERE 1
ORDER BY datetime DESC
LIMIT 5
";
EDITAR: Para responder ao comentário do OP:"o resultado que recebo é o início da linha 50 para a primeira consulta e segue por 49,48,47,46 É possível obter esse início da linha 46,47,48,49,50?"
Você pode fazer isso com o resultado em PHP, buscando as linhas e armazenando-as em um array e invertendo o array. Eu não acredito que você possa fazer um loop eficiente através de um recurso de resultado do mysql ao contrário.
Para fazer isso na consulta SQL, você precisa criar uma tabela temporária com a consulta original:
$query = "
SELECT
lat,
lng,
DATE_FORMAT(datetime,'%W %M %D, %Y %T') AS datetime
FROM (
SELECT
lat,
lng,
datetime
FROM markers1 WHERE 1
ORDER BY datetime DESC
LIMIT 5
) AS tmp_markers
ORDER BY datetime ASC
";
O resultado da consulta inicial é utilizado como tabela para pesquisar em uma nova consulta, que ordena por data e hora crescente. Eu tive que aplicar o DATE_FORMAT na consulta externa porque precisamos do campo datetime para ordenar novamente.