2009-03-16 5 views
5

Je développe une application Google Maps et j'ai rencontré ce problème. Je dois enlever tous les marqueurs qui sont hors des limites de la carte.Déterminer si un marqueur est visible dans Google Maps

Existe-t-il un moyen simple de faire cela, en plus de garder un tableau et de regarder la latlng de chaque marqueur?

Je ne peux pas utiliser MarkerManager parce que j'ai trop de points. Je ne veux pas utiliser clearOverlays() car il fermerait tout marqueur ouvert.

Toute aide serait appréciée.

Répondre

4

Si vous ne voulez pas regarder chaque marqueur individuellement, regroupez-les d'abord dans certains ensembles et calculez les limites de l'ensemble.

Vous pouvez ensuite afficher ou masquer les ensembles en fonction de ce qui est actuellement affiché sur la carte (vous pouvez trouver la limite de la carte en utilisant GMap2.getBounds()).

De combien de points parlons-nous?

Mise à jour

A. A propos de 65K.

Je peux voir pourquoi vous ne pouvez pas créer 65K GMarkers lorsque la page se charge. Cela prendra plus de 5 secondes.

Je les regrouperais en groupes de 200 ish et lorsque le bord du groupe se trouverait à l'intérieur d'une largeur de carte de 1/4 à l'extérieur du bord affiché, trouver, créer des marqueurs et afficher le groupe adjacent. Il sort de la moitié de la largeur de la carte du bord extérieur puis cache le groupe.

D'autres alternatives sont d'utiliser une bibliothèque tierce partie, comme

+0

65k, mais je ne montreront jamais plus de 300 à la fois – Sklivvz

+0

Merci pour l'astuce, l'autre problème est que le téléchargement de l'info pour générer des marqueurs 65k prendrait trop de temps ... – Sklivvz

+0

Regroupez-les côté serveur et chargez les limites du groupe dans le chargement de la page initiale. Vous pouvez ensuite télécharger les points à la volée en utilisant AJAX lorsque les groupes se rapprochent de la partie affichée de la carte. – RichH

Questions connexes