2009-04-30 19 views
5

Ostatnio pomagali ci rozwiązywać niektóre z moich problemów na Mapie Google i dziękuję za to.Przyciągaj do najbliższej ulicy

Prawie skończyłem z tym - został tylko jeden problem. Kiedy umieszczam pierwszy znacznik na mapie, przyciąga on do najbliższej ulicy (co jest w porządku!), Ale kiedy przeciągam pierwszy znacznik w inne miejsce, wskazówki nagle zaczynają zepsuć się. A markery się mieszają.

można zobaczyć przykład na http://dev.korebogen.dk/gmap/

muszę zrobić to możliwe, aby przesunąć pierwszy marker (nadal Przyciąganie) i kiedy umieścić drugi marker, kierunki pierwszy ładunek. Ale żeby ponownie zrobić pierwszy znacznik, muszę załadować wskazówki.

Mam nadzieję, że niektórzy z was mają rozwiązanie. Z góry dziękuję.

Odpowiedz

5

Blackpool Community Church Zespół Javascript ma excellent example of exactly this (direct link to the fourth example). Sprawdź także inne ich przykłady.

(disclaimer: nie jestem związany z nimi, ale nauczyliśmy się wiele o GMaps z ich przykładami)

Edit: Podejrzewam ogień wydarzeń map nieco jak to (Pseudokod, dla nazw prawdziwego zdarzenia itp . sprawdzić GMaps docs):

  • mapy: mouseDown, mouseUp, kliknij: {zestaw czerwony znacznik}
  • przeciągnij czerwony marker: mouseDown, dragstart {czerwony znacznik} mouseUp, kliknięcie: {zestaw marker b} (mousedown + mouseup), przeciągnij
  • oba znaczniki są ustawione? Tak, uzyskać wskazówki

Co sugeruję: w czerwonego markera i funkcji marker-A dragstart ustawić jakąś flagę "przeciągając znacznik", przywrócić go w funkcji dragend; w funkcji Set marker B ustawiaj tylko znacznik, jeśli aktualnie NIE przeciągamy czegoś (flaga nie jest ustawiona).

+0

Sprawdziłem je i włączyłem niektóre z ich kodu w moim przykładzie, ale nie działa zgodnie z przeznaczeniem. Nie mam pojęcia, co zrobiłem źle. –

+0

Spróbuję czegoś nowego z czwartym przykładem, 2 sekundy. :) –

+0

Nie mogę go uruchomić tak, jak zamierzałem. Czy możesz gotować coś, co zadziała z moim kodem? –

2

Kod, który podałem wcześniej słuchałem przez pierwsze dwa kliknięcia i dodano znacznik dla każdego. Problem polega na tym, że po przeciągnięciu pierwszego znacznika ponownie wywoływane jest zdarzenie "kliknięcie" - i tym samym dodawanie kolejnego znacznika w tej samej lokalizacji.

Na szczęście click event informuje, czy kliknięto nakładkę. Tak więc wykonaj tylko kod dodający nowy znacznik, jeśli nakładka ma wartość NULL. Należy zauważyć, że nakładka nie jest wartością logiczną.

var listener = GEvent.addListener(map, "click", function(overlay, latlng) { 
    if (overlay == null) { 
    // code to add new marker 
    } 
}); 
+0

Włączyłem twój poprzedni kod w moim przykładzie (może potrzebować odświeżenia). I to działa - mogę przeciągnąć pierwszy znacznik bez bałaganu. Ale potrzebuję pierwszego znacznika, aby przyciągnąć do najbliższej drogi (kliknięcie i przeciągnięcie), aby uniknąć na przykład wykreślania znacznika na polu. Najwyraźniej nie jestem zbyt dobry w Google Maps API lub Javascript, aby to zadziałało. Doceniam twoją pomoc. –

Powiązane problemy