Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [JavaScript] Google Maps GeoCoding przesuwa znacznik
Forum PHP.pl > Forum > Przedszkole
gsmphone
Witam,


Próbuję sobie poradzić z tym problemem już od kilku dni ale bezskutecznie. Mam kod który po kliknięciu na mapie pokazuje w dymku adres. Jeżeli kliknę np na wodę to znacznik zostaje przesunięty na najbliższą lokalizację gdzie jest adres... a ja potrzebuję żeby znacznik pozostał w miejscu i po prostu nie zwracało adresu.
Oto mój kod:

  1.  
  2. var map;
  3. var geocoder;
  4. var address;
  5.  
  6. function odpal() {
  7. map = new GMap2(document.getElementById("mapka"));
  8. map.setCenter(new GLatLng(50.730885,19.997383), 15);
  9. map.addControl(new GLargeMapControl);
  10. GEvent.addListener(map, "click", getAddress);
  11. geocoder = new GClientGeocoder();
  12. }
  13.  
  14. function getAddress(overlay, latlng) {
  15. if (latlng != null) {
  16. address = latlng;
  17. geocoder.getLocations(latlng, showAddress);
  18. }
  19. }
  20.  
  21. function showAddress(response) {
  22. map.clearOverlays();
  23. place = response.Placemark[0];
  24. point = new GLatLng(place.Point.coordinates[1],place.Point.coordinates[0]);
  25. marker = new GMarker(point);
  26. map.addOverlay(marker);
  27. marker.openInfoWindowHtml(
  28. '<b>Adres:</b>' + place.address + '<br>'
  29. );
  30.  
  31. }
  32.  


Z góry dziękuje za pomoc
rocktech.pl
Witam.

Nie mam jak teraz tego sprawdzić, ale rób tak że twórz nowy marker nie w miejscu które zwraca GeoCoder tylko w miejscu kliknięcia.
Prześledź też odpowiedź GeoCoder'a i spróbuj zrobić if dla swojego przypadku.
[JAVASCRIPT] pobierz, plaintext
  1. ...
  2. function showAddress(response) {
  3.  
  4. map.clearOverlays();
  5.  
  6. place = response.Placemark[0];
  7. //tutaj tworzy marker w miejscu kliknięcia zmienną musisz przekazać
  8. point = new GLatLng(latlng);
  9.  
  10. marker = new GMarker(point);
  11.  
  12. map.addOverlay(marker);
  13.  
  14. marker.openInfoWindowHtml(
  15.  
  16. '<b>Adres:</b>' + place.address + '<br>'
  17.  
  18. );
  19. ...
[JAVASCRIPT] pobierz, plaintext
gsmphone
Zrobiłem tak jak piszesz czyli zamiast:

point = new GLatLng(latlng);

dałem

point = new GLatLng(clicked.y, clicked.x);

ale nie wyświetla markera



rocktech.pl
Daj chwilowo (kod poniżej) i zobacz czy wyświetla. Na 100% masz problem z zasięgiem zmiennych.

[JAVASCRIPT] pobierz, plaintext
  1. point = new GLatLng(51,21);
[JAVASCRIPT] pobierz, plaintext
gsmphone
Też nigdzie na mapie nie ma znacznika. Czyli co mam zrobić żeby naprawić zasięg zmiennych?

Teraz poprawiłem i pokazuję się znacznik tylko w jednym miejscu ale nie w tym 51,21 ale w 50,20... czyli pewnie w najbliższej okolicy gdzie jest jakiś adres. No ale dlaczego nie łapie mi miejsca gdzie klikam?
rocktech.pl
Zainstaluj FireBuga pod Firefoxem albo odpal DragonFly pod Operą i wejdź w zakładkę konsola.
Dostaniesz cały obiekt jak na dłoni. Podpowiem response.name (to miejsce kliknięcia) i dodaj sprawdzanie czy Placemark jest zdefiniowany smile.gif

[JAVASCRIPT] pobierz, plaintext
  1. function showAddress(response) {
  2. //Dodaj
  3. console.log(response);
  4. ....
[JAVASCRIPT] pobierz, plaintext
gsmphone
FireBug wywala mi błąd:
"clicked is undefined"
var marker=new GMarker(new GLatLng(clicked.y, clicked.x), {draggable: false});

Hmmm to może inaczej spróbuje robić... tylko jak z "place.address" oddzielić informacje... tzn w tym mi zwraca Ulica, Kod Pocztowy i miasto. Jak zrobić żeby z tego tylko uzyskać ulicę?
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.