Mapy Google - Przesuwanie i powiększanie obszarów - znaczniki nie pojawiają się podczas powiększania lub przesuwania - POMOC!

Implementuję klastrowanie oparte na granicach na końcu serwera znaczników, aby wyświetlić je na mapach google. Robię to, że mam funkcję, która jest wywoływana za każdym razem, gdy mapa jest przesuwana lub przesuwana lub powiększana, która zajmuje granicę mapy i tworzy wywołanie ajax, które z kolei skrypt po stronie serwera uruchamia proste zapytanie sql, aby pobrać markery i ich skupienia. Ta część klastra działa bardzo dobrze, jednak czasami getBounds nie wydaje się wysyłać poprawnych granic, które czuję.

Podobnie jak ja mogę przesuwać mapę nieco po stronie, a regiony, które kiedyś posiadały znaczniki, nagle nie mają znaczników, a mapa jest pusta. Sprawdziłem kwerendę sql iz samego kwerendy pokazuje ona skandalicznie różne granice, niż można by oczekiwać.

Spójrz na poniższe regiony:Orginal WitH Markers http://i31.tinypic.com/xds4t0.jpg Brak znaczników http://i31.tinypic.com/2r22ez4.jpg

Pierwszy pokazuje wszystkie znaczniki.

Następujący po prostu przesunął się nieco w górę i w lewo, ale połowa regionu jest taka sama jak na poprzednim obrazku, jednak w ogóle nie ma znaczników. Wyodrębniłem ten problem, aby był funkcją getBounds map.

To jest mój kod javascript, który pobiera granice i wykonuje połączenie:

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
    }
});

Na moim kodzie po stronie serwera jest to php używany do pobierania elementów na podstawie współrzędnych:

$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)';

Podejrzewam, że jego funkcja getbounds w javascript, ale trzeba to naprawić jak najszybciej. Wszelkie pomysły proszę :(

questionAnswers(2)

yourAnswerToTheQuestion