Google Maps - Schwenken und Zoomen in Bereiche - Beim Vergrößern oder Schwenken werden keine Markierungen angezeigt - HILFE!

Ich implementiere ein grenzenbasiertes Clustering am Serverende von Markierungen, die auf meinen Google Maps angezeigt werden sollen. Was ich tue, ist, dass ich eine Funktion habe, die jedes Mal aufgerufen wird, wenn die Karte bewegt oder geschwenkt oder gezoomt wird, die den Rand der Karte einnimmt und einen Ajax-Aufruf ausführt, der wiederum vom serverseitigen Skript eine einfache SQL-Abfrage zum Abrufen der ausführt Marker und gruppiert sie. Bisher funktioniert der Clustering-Teil gut, aber manchmal scheinen die getBounds nicht die richtigen Grenzen zu senden, die ich fühle.

Als ob ich eine Karte etwas seitlich schwenken könnte und Regionen, die früher Markierungen hatten, plötzlich keine Markierungen mehr haben und die Karte leer ist. Ich habe die SQL-Abfrage überprüft und aus der Abfrage selbst ergeben sich unverschämt andere Grenzen als erwartet.

Werfen Sie einen Blick auf die folgenden Regionen:Orginal WitH Marker http://i31.tinypic.com/xds4t0.jpg Keine Marker http://i31.tinypic.com/2r22ez4.jpg

Der erste zeigt alle Marker.

Der folgende ist jedoch etwas nach oben und links gerückt, aber die Hälfte der Region ist die gleiche wie auf dem vorherigen Bild, es sind jedoch überhaupt keine Markierungen vorhanden. Ich habe das Problem mit der getBounds-Funktion der Karten isoliert.

Dies ist mein Javascript-Code, der die Grenzen abruft und den Anruf tätigt:

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

Auf meinem Server ist dies der PHP-Code, mit dem die Elemente basierend auf den Koordinaten abgerufen werden:

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

Ich vermute, es ist die getbounds-Funktion im Javascript, aber ich muss es so schnell wie möglich beheben. Irgendwelche Ideen bitte :(

Antworten auf die Frage(2)

Ihre Antwort auf die Frage