Ich implementiere einige Boundary-basierte Clustering auf dem Server-Ende von Markern, um auf meinen Google Maps anzuzeigen. Was ich tue, ist, dass ich eine Funktion habe, die jedes Mal aufgerufen wird, wenn die Karte bewegt oder geschwenkt oder gezoomt wird, die die Grenze der Map nimmt und einen Ajax-Aufruf ausführt, der wiederum das serverseitige Skript eine einfache SQL-Abfrage ausführt Marker und Cluster sie. Bis jetzt funktioniert der Clustering-Teil gut, aber manchmal scheint die getBounds nicht die richtigen Grenzen zu senden, die ich fühle.Google Maps - Schwenken und Zoomen in Bereiche - Marker werden beim Zoomen oder Schwenken nicht angezeigt - HILFE!
Wie ich eine Karte ein bisschen auf der Seite schwenken kann und Regionen, die früher Marker hatten, haben plötzlich keine Marker und die Karte ist leer. Ich überprüfte die SQL-Abfrage und von der Abfrage selbst zeigt es eine unerhörte andere Grenzen als was erwartet werden würde.
Werfen Sie einen Blick auf die Regionen unter: Orginal WitH Markers http://i31.tinypic.com/xds4t0.jpg No markers http://i31.tinypic.com/2r22ez4.jpg
Die erste alle Marker zeigt.
Der folgende hat sich jedoch ein wenig nach oben und links bewegt, aber die Hälfte der Region ist die gleiche wie im vorherigen Bild, aber es gibt überhaupt keine Markierungen. Ich habe das Problem isoliert, um mit der getBounds-Funktion der Karten zu sein.
Dies ist mein Javascript-Code, der die Grenzen und macht den Anruf bekommt:
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-Side-Code dies der php die Elemente verwendet wird, ist auf den Koordinaten basiert zu erhalten:
$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 Funktion getbounds im Javascript, aber muss es so schnell wie möglich beheben. Irgendwelche Ideen bitte :(
Verstanden fixiert - alle meine 20 000 Marker hatte Standorten :) Danke für alle Antworten vermasselt! – Ali