5

W skrócie
Chcę znaleźć wszystkie znaczniki, które znajdują się w prostokątnym obszarze utworzonym przez przeciągnięcie wskaźnika myszy nad mapę. Czy ta funkcja jest obsługiwana przez jakiekolwiek wtyczki jQuery lub coś innego? Jeśli nie, chciałbym to wdrożyć w moim projekcie. Myślę, że byłoby fajnie.Jak uzyskać znaczniki wewnątrz obszaru wybranego za pomocą przeciągnięcia myszą?

Szczegóły
używam Google Maps v2 bo chcę wspierać IE 6 w moim projekcie.

Jestem początkujący w Mapach i przejrzałem Developer's guide section oraz kilka podstawowych prezentacji i innych pytań dotyczących SO.

Oto mój pomysł tak daleko -

  • Użytkownik klika na „Wybierz obszar” przycisku w sekcji kontroli mapy. Wywołuje to disableDragging() i użytkownik jest gotowy do dokonania wyboru. (Może być http://code.google.com/apis/maps/documentation/javascript/v2/controls.html#Custom_Controls daje jakiś pomysł, jak to zrobić)

  • Następnie użytkownik wybiera obszar. Zaznaczono punkty początku i końca selekcji i zakładając, że są to dwa przeciwległe wierzchołki prostokąta, znajdują się w nim znaczniki. Ale do tej pory nie widziałem żadnego działającego kodu, aby uzyskać współrzędne klikniętego punktu. Sądzę, że lepiej jest używać współrzędnych o szerokości/długości geograficznej zamiast rzeczywistych współrzędnych x-y. To pytanie Google Maps API using jQuery Plugin: How to get a marker's latitude and longitude on click? omawia uzyskanie szerokości/długości znacznika po kliknięciu, ale nie udało mi się go jeszcze wypróbować.

Podsumowanie
Oto moje pytania ponownie -

  • Jak mogę wyświetlić prostokątny obszar wyboru na mapie? (zazwyczaj nieznacznie szary i przezroczysty)

  • Jak uzyskać szerokość/szerokość (długość/szerokość) klikniętego punktu, a następnie rozszerzyć, aby uzyskać punkty początkowe i końcowe zaznaczenia.

Mam doświadczenie z jQuery i jeśli są jakieś fajne rozwiązania z wtyczkami jQuery, proszę daj mi znać. Widziałem tę listę 10 jQuery Plugins for Easier Google Map Installation, ale nie jestem pewien, czy któryś z nich pomoże mi spełnić moje wymagania.

Kiedy mam listę znaczników, chciałbym wypełnić niektóre powiązane informacje w oddzielnej sekcji wyświetlania, tak aby za każdym razem, gdy użytkownik wybierze niektóre znaczniki, odpowiednie informacje są wyświetlane w sekcji wyświetlania. Ta część powinna być łatwiejsza.

Dzięki

Odpowiedz

4

Można sprawdzić KeyDragZoom przykład pod Google Maps API Demo Gallery osiągnąć prostokątną funkcję selekcji. Możesz znaleźć dokumentację here.

Dla drugiego problemu można użyć klasy GLatLngBounds i jej funkcji containsLatLng(latlng:GLatLng). Ustawiając obiekt GLatLngBounds na granicy prostokąta, możesz przetestować swoje znaczniki za pomocą funkcji containsLatLng.

Jeśli użytkownik zdecyduje się użyć KeyDragZoom, dodając dragend słuchacza do getDragZoomObject daje GLatLngBounds przedmiot, który można użyć, aby przetestować swoje znaczniki przeciwko z funkcją containsLatLng.

+0

+1 wygląda tak, jak chcę ... –

+0

Tak, to rozwiązuje problem. W przypadku części sprawdzającej w powyższym zdarzeniu przeciągania to rozwiązanie http://stackoverflow.com/questions/2949486/how-to-check-if-there-are-an-markers-within-a-google-maps-viewport/ 3298437 # 3298437 można śledzić –