J'utilise actuellement le plugin markercluster avec des cartes jquery ui.
J'ai deux tableaux, l'un de tous les marqueurs (appelés marqueurs) et l'un des marqueurs qui correspondent aux critères de recherche (appelés current_markers). Ceux-ci sont ajustés à partir du premier tableau.
Je dessine ensuite les marqueurs current_markers à l'écran.
Je constate cependant que la bibliothèque markerclusterer ne se met pas à jour en fonction de ce changement.
Alors, comment puis-je mettre à jour le markerclusterer?
Est-il possible d'affecter le marqueurcluster à une variable et d'appeler une fonction de mise à jour?
Vous devez stocker l'objet marqueur dans une variable, puis désactiver la carte comme suit:
var markerCluster = new MarkerClusterer(map, markers);
/// ... later on
markerCluster.setMap(null);
après avoir fait cela, vous pouvez initier un new MarkerClusterer
avec de nouveaux marqueurs
Mise à jour
puisque vous utilisez le plugin google maps ui, voici un code supplémentaire. J'ai ajouté un clic même sur un bouton de classe reset_markercluster
ofcourse c'est juste pour montrer comment l'utiliser pour appeler la carte
var _map, _markerCluster;
$(function() {
$('#map_canvas').gmap().bind('init', function(event, map) {
_map = map; // at this point you can call _map whenever you need to call the map
// build up your markers here ...
_markerCluster = new MarkerClusterer(_map, markers); // you could also use map instead of _map here cause it's still present in this function
});
$("button.reset_markercluster").click(function(e) {
e.preventDefault();
_markerCluster.setMap(null); // remove's the previous added markerCluster
// rebuild you markers here ...
_markerCluster = new MarkerClusterer(_map, newMarkers);
});
});
Oui, vous pouvez.
En supposant que vous avez créé votre objet MarkerClusterer quelque chose comme ceci:
var center = new google.maps.LatLng(10, 20);
var map = new google.maps.Map(document.getElementById('map'), { zoom: 6, center: center, mapTypeId: google.maps.MapTypeId.ROADMAP });
var markerClusterer = new MarkerClusterer(map);
Vous pouvez y ajouter plusieurs marqueurs comme ceci:
var markers = []
var marker = new google.maps.Marker({position: center});
markers.Push(marker);
markerClusterer.addMarkers(markers);
Notez qu'ici, j'en ai ajouté un seul.
Vous pouvez ensuite effacer tous les marqueurs en utilisant clearMarkers quelque chose comme ceci:
markerClusterer.clearMarkers();
markers = [];
Notez que par ordre, j'ai également désactivé le tableau des marqueurs ici.
Une documentation complète sur toutes les méthodes disponibles est disponible ici:
https://googlemaps.github.io/js-marker-clusterer/docs/reference.html
C'est une API raisonnable et relativement complète.
Il est préférable d'utiliser la méthode clearMarkers () de votre objet markerCluster:
http://google-maps-utility-library-v3.googlecode.com/svn/trunk/markerclusterer/docs/reference.html
marker-clusterer-plus a une méthode removeMarkers
:
markerCluster.removeMarkers(markers);