www.gmapsapi.com

Kompleksowy kurs podstaw API, po którym mapowianie nie będzie miało przed Tobą żadnych tajemnic!

Setki przykładów, kursów i poradników z kodem gotowym do skopiowania i korzystania.

Największa strona o Google Maps API w Polsce, największe źródło informacji w języku polskim.

Optymalizacja wyświetlania dużej ilości znaczników

Ten artykuł dotyczy API w wersji 2

« powrót do listy poradników

Do mapy można dodać teoretycznie nieskończoną ilość markerów. W praktyce okazuje się, że dodanie kilkuset markerów nawet na bardzo dobrych komputerach może znacznie spowalniać działanie mapy (szarpane przesuwanie, długi okres oczekiwania na wykonanie operacji itp.)

Każdy marker, dodany na mapę funkcją mapa.addOverlay() istnieje na niej aż do usunięcia. Oglądając więc pewien obszar, dla celów rysowania w pamięci przeglądarki są wszystkie markery z danej mapy nawet, jeśli znajdują się poza krawędzią widocznego pola na mapie.

Z pomocą przychodzi Marker Manager (menedżer markerów) - wbudowana klasa w Google Maps API. Raz utworzony, śledzi położenie wszystkich markerów na mapie, i trzyma w pamięci jedynie te, które w danym momencie faktycznie widzisz.

Sposób użycia

Inicjalizacja

Wpierw musisz utworzyć nowy obiekt klasy GMarkerManager:

var mmgr;
var mapa;

mapa = new GMap2(document.getElementById('mapka'));
mmgr =  new GMarkerManager(mapa,{maxZoom: 19});

mmgr musi być obiektem globalnym. Pierwszym argumentem jest odwołanie do mapy, na której markery będą śledzone. Opcjonalny parametr opcji maxZoom określa maksymalny poziom zoom, przy którym markery są śledzone. W przeważającej części przypadków, argument ten należy ustawić na 19 - maksymalny poziom zoomu w Google Maps API

Dodanie markera do śledzenia

Dodanie pojedynczego markera do śledzenia odbywa się następująco:

var marker = new GMarker(punkt);
mmgr.addMarker(marker,3,19);

Funkcja addMarker() przyjmuje trzy argumenty, z czego dwa ostatnie są opcjonalne. Pierwszy to marker, który dodamy na mapę. Drugi i trzeci określają minimalny i maksymalny poziom zoomu, na których marker będzie widoczny. Na końcu tej części kursu pokażę zastosowanie tej ciekawej funkcjonalności.

Efekt działania

Przykład 1 umożliwia dodanie określonej ilości markerów na mapę bez użycia GMarkerManager. Na moim komputerze (PIV, 3.2Ghz) dodanie 200 markerów powoduje już widoczne lagi w przesuwaniu mapy, po dodaniu kolejnych 400 lagi stają się już bardzo zauważalne.