Google Maps - Panorâmica e zoom em áreas - marcadores não aparecem quando eu zoom in ou pan - AJUDA!

Estou implementando alguns clusters baseados em limites no final do servidor de marcadores para exibir no meu google maps. O que eu estou fazendo é que eu tenho uma função que é chamada toda vez que o mapa é movido ou deslocado ou ampliado que pega o limite do mapa e faz uma chamada ajax que por sua vez o script do lado do servidor executa uma consulta SQL simples para recuperar o mapa marcadores e agrupa-os. Até agora, a parte de clustering está funcionando bem, mas às vezes os getBounds não parecem estar enviando os limites corretos que sinto.

Como se eu pudesse mover um mapa um pouco para o lado e as regiões que costumavam ter marcadores agora de repente não têm marcadores e o mapa fica em branco. Eu verifiquei a consulta sql e da consulta em si mostra um limites escandalosamente diferentes do que seria esperado.

Dê uma olhada nas regiões abaixo:Original com marcadores http://i31.tinypic.com/xds4t0.jpg Sem marcadores http://i31.tinypic.com/2r22ez4.jpg

O primeiro mostra todos os marcadores.

O seguinte, no entanto, acaba de se mover um pouco para o topo e para a esquerda, mas a metade da região é a mesma da foto anterior, no entanto, não há marcadores. Eu isolei o problema para estar com a função getBounds dos mapas.

Este é o meu código javascript, que recebe os limites e faz a chamada:

var bounds = map.getBounds();
var southWest = bounds.getSouthWest();

var northEast = bounds.getNorthEast();
var data = {ne:northEast.toUrlValue(), sw:southWest.toUrlValue(), zoom:map.getZoom()};
//something getting messed up in the code above this point

$.ajax({
    type: "POST",
    url: 'maps/get-markers',
    data: {object:$.toJSON(data)},
    dataType: 'json',

    success: function(response) {
        //code to add markers
    }
});

No meu código do lado do servidor, este é o php usado para obter os itens com base nas coordenadas:

$data =  Zend_Json::decode(stripslashes($this->_request->getParam('object')));

//retrieve the variables from the GET vars
list($nelat, $nelng) = explode(',', $data['ne']);
list($swlat, $swlng) = explode(',',$data['sw']);

//clean the data
$nelng  =   (float)$nelng;
$swlng  =   (float)$swlng;
$nelat  =   (float)$nelat;
$swlat  =   (float)$swlat;

$ubound = $swlng > $nelng ? $swlng : $nelng;
$lbound = $swlng > $nelng ? $nelng : $swlng;

$sql = 'SELECT `a`.* FROM `locations` AS `a` WHERE (a.`longitude` > $lbound) AND (a.`longitude` < $ubound) AND';

$ubound = $swlat > $nelat ? $swlat : $nelat;
$lbound = $swlat > $nelat ? $nelat : $swlat;


$sql .= ' (a.`latitude` >= $lbound) AND (a.`latitude` <= $ubound)';

Estou suspeitando que é a função getbounds no javascript, mas preciso corrigi-lo o mais cedo possível. Alguma idéia por favor :(

questionAnswers(2)

yourAnswerToTheQuestion