2010-06-01 5 views

Répondre

5

La meilleure solution que je suis venu avec est de

  • sur le lancement de l'application, créez un tableau en référence à des marqueurs - triés par 1 coordonnée, à savoir la latitude
  • obtenir les limites de viewport avec GMap2.getBounds() (comme paullb suggéré)
  • prendre latitude inférieure des limites de fenêtres et chercher dans le tableau (le plus rapide à réaliser avec la recherche binaire)
  • vérifier si chaque marqueur suivant correspond à l'intérieur de la fenêtre (jusqu'à la borne de latitud e < = latitude supérieure du viewport).
1

Utilisez GMap2.getBounds() pour rechercher la zone de délimitation. Utilisez GLatLngBounds.containsLatLng() pour vérifier chaque marqueur pour voir s'il est visible. Vous pouvez également essayer d'utiliser la même approche avec le cluster de marqueurs si la valeur de chaque cluster est stockée de manière facilement accessible. (Ne me suis pas regardé)

+0

Merci pour la réponse. Pour 3-5 marqueurs cela fonctionnerait bien, mais comme le nombre augmente à des centaines/milliers (c'est mon cas), ce ne serait pas optimal. –

+0

Je pense que le cluster de marqueur tombe en panne pour 1000s de marqueurs. Je l'ai essayé et c'était plutôt lent. – paullb

+0

J'aurais pu m'habituer à de gros mots. Pour l'instant, j'ai testé ti avec c.a. 1000 marqueurs et cela fonctionne comme un charme, donc je suppose que cela pourrait atteindre au moins quelques milliers. –