2010-04-22 15 views
7

Korzystam z Google Maps v3, a po stronie serwera buduję zbiór danych o lokalizacji json. Kiedy otrzymuję to, przechodzę przez tę kolekcję i tworzę obiekt znacznika dla każdego z nich.Jak przechowywać więcej informacji w znaczniku?

Dla każdego z tych znaczników wiążę je ze zdarzeniem kliknięcia, więc gdy użytkownik kliknie znacznik na mapie, wyświetla informację o danych związanych z powiązaną lokalizacją.

Mam tablicę do przechowywania wszystkich lokalizacji uzyskanych z serwera, który przechowuje pobrane obiekty Json i odpowiadający im znacznik.

Problem polega na tym, że nawet jeśli mam tablicę, do której mogę się odwoływać lub ją sprawdzać, muszę nie tylko uzyskać obiekt znacznika, gdy użytkownik go kliknie, ale także obiekt lokalizacji, który przechowuje więcej informacji.

Próbowałem utworzyć tę tablicę obiektów i odwołać ją z obiektu wywołującego bez powodzenia, ponieważ funkcja jest wywoływana przez znacznik, a nie obiekt lokalizacji. Pomyślałem więc, czy możliwe jest przechowywanie większej ilości informacji w obiekcie znaczników mapy google, jak w przypadku pola ogólnego przeznaczenia.

Proszę dać mi znać, jeśli potrzebujesz więcej informacji.

Dzięki!

Odpowiedz

9

Tak, można, dzięki JavaScript. W tym języku obiekty i hashtables są tym samym, co .

ten sposób tworzysz swój znacznik:

var point = new google.maps.LatLng(40.70, -74.00); 
var myMarker = new google.maps.Marker({ position: point, map: map }); 

A to w jaki sposób można dodać dodatkowe właściwości do obiektu myMarker:

myMarker.myNewField = 100; 

Viola! Nie ma potrzeby przechowywania oddzielnych tablic powiązanych danych. Nie ma potrzeby stosowania pola ogólnego przeznaczenia. Po prostu wymyśl nazwę nowej nieruchomości i możesz już iść.


A Survey of the JavaScript Programming Language Douglas Crockforda.

+0

To jest dokładnie to, czego szukałem! Dziękuję Ci bardzo! – Sebastian

+0

Nie jestem pewien, czy to jest dobra odpowiedź. Co się stanie, jeśli twoja myNewField zderzy się z atrybutami api mapy google, które mogą zostać dodane w przyszłości? ** To hack, który działa, jeśli masz szczęście, a nie czyste, najlepsze rozwiązanie **. – TMS

+0

@Tomas To nie jest hack. Obiekty są hashmapami w JavaScript. Interfejs API Map Google wykorzystuje niektóre klawisze mapy mieszającej. Mogą korzystać z innych w przyszłych wersjach, ale trzymanie się określonej wersji interfejsu API powinno zapobiegać takim kolizjom. –

Powiązane problemy