Je suis en train de mettre en place un clustering basé sur les limites de l'extrémité serveur des marqueurs à afficher sur mes google maps. Ce que je fais est que j'ai une fonction qui est appelée à chaque fois que la carte est déplacée ou panoramique ou zoomée qui prend la limite de la carte et fait un appel ajax qui à son tour le script côté serveur exécute une simple requête sql pour récupérer le marqueurs et les clusters. Jusqu'à présent, la partie cluster fonctionne bien, mais parfois, le getBounds ne semble pas envoyer les limites correctes que je ressens.Google Maps - Panoramique et zoom dans les zones - les marqueurs n'apparaissent pas lorsque j'effectue un zoom avant ou un panoramique - HELP!
Comme je peux faire un panoramique sur une carte un peu sur le côté et les régions qui avaient auparavant des marqueurs n'ont tout d'un coup pas de marqueurs et la carte est vide. J'ai vérifié la requête sql et à partir de la requête elle-même, elle montre des limites outrageusement différentes de ce qui serait attendu.
Jetez un oeil sur les régions ci-dessous: Orginal WitH Markers http://i31.tinypic.com/xds4t0.jpg No markers http://i31.tinypic.com/2r22ez4.jpg
Le premier montre tous les marqueurs.
Celui qui suit vient cependant de se déplacer un peu en haut et à gauche mais la moitié de la région est la même que sur l'image précédente mais il n'y a aucun marqueur du tout. J'ai isolé le problème pour être avec la fonction getBounds des cartes.
Ceci est mon code javascript qui obtient les limites et fait l'appel:
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
}
});
Sur mon code côté serveur c'est le php utilisé pour obtenir les éléments basés sur les coordonnées:
$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)';
Je soupçonne que c'est la fonction getbounds dans le javascript, mais que vous devez corriger dès que possible. Toutes les idées s'il vous plaît :(
Got it fixe - tous mes 20 000 marqueurs ont foiré les remerciements emplacements pour toutes les réponses! – Ali