2009-03-16 13 views
5

Pracuję nad aplikacją Google Maps i napotkam ten problem. Muszę usunąć wszystkie znaczniki poza zasięgiem mapy.Określanie, czy znacznik jest widoczny w Google Maps

Czy jest jakiś prosty sposób na to, oprócz zachowania tablicy i patrzenia na latlng każdego markera?

Nie mogę używać MarkerManager, ponieważ mam zbyt dużo punktów. Nie chcę używać clearOverlays(), ponieważ spowoduje to zamknięcie dowolnego otwartego znacznika.

Każda pomoc zostanie doceniona.

Odpowiedz

4

Jeśli nie chcesz spojrzeć na każdy znacznik indywidualnie, najpierw zgrupuj je w kilka zestawów i obliczyć granice zestawu.

Możesz następnie pokazać lub ukryć zestawy w zależności od tego, co aktualnie pokazuje na mapie (możesz znaleźć granicę mapy za pomocą GMap2.getBounds()).

Ile punktów mówimy?

Aktualizacja

A. O 65K.

Widzę, dlaczego nie można utworzyć GMKerów 65K podczas ładowania strony. To zajmie 5 sekund.

Zgrupowałbym je w grupy o wartości 200 ish i gdy krawędź grupy znajdzie się w granicach 1/4 szerokości mapy poza wyświetlaną krawędzią, a następnie znajdź, utwórz znaczniki i wyświetl sąsiednią grupę. Wykracza poza 1/2 szerokości mapy zewnętrznej krawędzi, a następnie ukrywa grupę.

Inne alternatywy są do korzystania trzeci biblioteki strona takiego jak

+0

65k, ale nigdy nie pokaże ponad 300 naraz – Sklivvz

+0

Dzięki za wskazówkę, innym problemem jest to, że pobieranie informacji do wygenerowania znaczników 65k zajęłoby zbyt długo ... – Sklivvz

+0

Pogrupuj je po stronie serwera i wczytaj granice grupy podczas ładowania strony początkowej. Możesz pobierać punkty w locie za pomocą AJAX, ponieważ grupy zbliżają się do wyświetlanej części mapy. – RichH