2010-04-26 4 views
1

J'ai actuellement une implémentation où certains marqueurs provenant de la liste JSON sont montrés, sur une zone particulière, Maintenant je veux filtrer ces marqueurs en fonction de certains critères, j'ai fait la partie filtrage, et j'ai obtenu la liste filtrée. Maintenant, pour rendre à nouveau ces marqueurs sur la carte, l'implémentation actuelle charge à nouveau le js avec une clé, crée également l'objet GMap2 et dessine la liste des marqueurs sur la carte nouvellement créée, ce qui est vraiment gênant. Je veux que la carte soit là et que seuls les marqueurs soient ajoutés et retirés de la carte. Toute aide est appréciéecomment redessiner des marqueurs sans redessiner la carte? google maps

+0

Il serait préférable que vous fournissiez votre code actuel afin que nous puissions voir ce que vous avez réussi à accomplir jusqu'à présent. – akamike

Répondre

2

Vous pouvez utiliser addOverlay et removeOverlay pour ajouter/supprimer des marqueurs d'une carte déjà affichée. Voir les exemples ici: http://code.google.com/apis/maps/documentation/overlays.html#Markers

var latlng = new GLatLng(lat, lng); 
map.addOverlay(new GMarker(latlng)); 
+0

Eh bien j'ai essayé cela, et contourné le chargement de la js et la création de l'objet carte, Et sauté directement à getMarkers, Les getMarkers font toute la création de marqueurs en les ajoutant à la carte et appelant setCenter sur la carte. J'ai appelé clearoverlays() avant cela sur GMap, Cela n'a pas du tout généré de carte. Le conteneur div est vide. Aucune idée pourquoi !!! – Vishwanath

+0

Je ne suis pas du tout sûr de ce que vous voulez dire. Ce code va ajouter un nouveau marqueur à une carte déjà affichée, il n'y a absolument pas besoin de recharger la carte: var latlng = nouveau GLatLng (southWest.lat() + latSpan * Math.random(), southWest.lng () + lngSpan * Math.random()); map.addOverlay (nouveau GMarker (latlng)); J'ai vraiment besoin de voir votre code pour aider plus que cela. –

+0

Désolé, mon mal, tout ce que vous avez dit était exactement exact et j'étais aussi dans la même voie. Le problème avec mon implémentation était une procédure d'initialisation à partir d'un fichier différent, qui nettoyait toute la zone de la carte, donc cela m'a fait réfléchir, que je ne connais pas beaucoup google api et qu'il y avait peut-être quelque chose qui me manquait. Merci pour votre aide. Désolé, mais je ne peux pas upvote tout comme je suis encore nouveau ici. :( – Vishwanath

1

Vous pouvez faire en deux fonctions distinctes drawmap() et drawMarkers(). Et après que la carte a été créée redéfinir drawMap à la fonction vide comme ceci: drawMap = function() {}; Après cela, seul drawMarkers() sera exécuté.

J'espère que c'est ce dont vous avez besoin. Sinon, fournissez du code.

Questions connexes