Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [AJAX][JS][GoogleMaps] Google mapy, identyfikator Markera
Forum PHP.pl > Forum > XML, AJAX
BirdWatcher
Witam!

czy ktos moglby mi pomoc, jak przypisac kazdemu utworzonemu markerowi jakis identyfikator, chodzi mi o to zeby uzytkownik mogl stworzyc tylko 3 markery na mapie, no i np, jak przesuwa jeden z tych to przesylam nowe wspolrzedne do php i uploaduje do bazy, tylko jak zidentyfikowac ktory marker zostal przesuniety, i uploadowac w bazie wlasciwy rekord?

bede bardzo wdzięczny za pomoc.

pozdrawiam:)
sticker
można to zrobic na kilka sposobów:
- tworząc marker przypisujesz jego referencje do jakiejś zmiennej w js
- mozesz skorzystać (chyba) z wbudowanego w api z menadżera markerów ( GMarkerManager jak sie nie myle)

Jak sprawdzić czy został przesunięty? Możesz to stwierdzić na podstawie współrzędnych aktywnego markera który przesuwasz, napisz klase ktora bedzie obsługiwała aktywny marker poprzez zarejestrowanie dla markera eventu na drag i drop . W evencie sparwdzić czy pozycja jest ta sama po upuszczeniu jest rózna od orginalnej i jak nie to ajax.request do sv.
BirdWatcher
a móglbys pokazac jakis przykład co do tego pierwszego, prosze?

to jak sprawdzic czy marker przesuniety to wiem, ale skad skrypt ma wiedziec ktory marker przesuniety biggrin.gif

bede bardzo wdzieczny za obszerniejszą pomoc.

EDIT:

aa i jak moglby mi pomoc ten MarkerManager, bo czytalem o tym ale nic podobnego tam nie zauwazylem sad.gif

tak wyglada ten kod:

  1. FUNCTION LOAD() {
  2.  
  3.  
  4. map = new GMap2(document.getElementById("map"));
  5. map.setCenter(new GLatLng(37.4419, -122.1419), 10);
  6. map.addControl(new GLargeMapControl());
  7. map.addControl(new GOverviewMapControl());
  8. //geocoder = new GClientGeocoder();
  9.  
  10. }
  11.  
  12. FUNCTION createNewMarker(type){
  13. var uploadType = type;
  14. var marker = new GMarker(map.getCenter(), {draggable:true});
  15. map.addOverlay(marker);
  16.  
  17. GEvent.addListener(marker, "click", FUNCTION() {
  18. marker.openInfoWindowHtml("Marker type: <b>" + type + "</b>");
  19. });
  20.  
  21. GEvent.addListener(marker, "dragend", showType(type));
  22. }
  23.  
  24. FUNCTION showType(type){
  25. document.getElementById("error_block").innerHTML = "Marker Type: " + type;
  26. }



Jak widzicie, marker-dragend pokazuje w divie jego typ, no ale niestety jesli na mapie pojawia sie dwa markery createNewMarker() <- z roznymi typami tutaj, to w tym divie zawsze pokazuje tylko ten ostatni typ.
sticker
  1. <?php
  2. //tworzenie markera
  3. marker = new GMarker( lokalizacjaMarkera, opcjeMarkera); 
  4. //dodanie listenera na clik
  5. GEvent.addListener(marker, "click", function() {
  6. marker.openInfoWindowHtml("lalala");
  7. //dodanie markera na mapke
  8. map.addOverlay(marker);
  9. ?>


albo lepiej cały przykład z google api

  1. <?php
  2. <script type="text/javascript">
  3.  
  4. function initialize() {
  5. if (GBrowserIsCompatible()) {
  6. var map = new GMap2(document.getElementById("map_canvas"));
  7. var center = new GLatLng(37.4419, -122.1419);
  8. map.setCenter(center, 13);
  9.  
  10. var marker = new GMarker(center, {draggable: true});
  11.  
  12. GEvent.addListener(marker, "dragstart", function() {
  13. map.closeInfoWindow();
  14. });
  15.  
  16. GEvent.addListener(marker, "dragend", function() {
  17. marker.openInfoWindowHtml("Just bouncing along...");
  18. });
  19.  
  20. map.addOverlay(marker);
  21.  
  22. }
  23. }
  24. </script>
  25. ?>



spojrz na źródło
BirdWatcher
zerknij na moja pierwsze odpowiedz, dodalem tam moj kod, ktory jest taki sam jak przedstawiłes, ale on nie rozwiazuje problemu,

EDIT:

I wlasnei po upuszczeniu markera wyskakuje mi to okienko i tutaj pokazuje wlasciwy typ, w divie typ pozostaje ten, ktory ostatni marker byl dodany

to dziwne, chyba mam jakis problem z js.. ;/
  1. FUNCTION createNewMarker(type){
  2. var uploadType = type;
  3. var marker = new GMarker(map.getCenter(), {draggable:true});
  4.  
  5.  
  6. GEvent.addListener(marker, "click", FUNCTION() {
  7. marker.openInfoWindowHtml("Marker type: <b>" + type + "</b>");
  8. });
  9.  
  10. GEvent.addListener(marker, "dragend", showType(type));
  11.  
  12. map.addOverlay(marker);
  13. }
  14.  
  15. FUNCTION showType(type){
  16. document.getElementById("error_block").innerHTML = "Marker Type: " + type;
  17. }


Kod powyżej nie dziala, tak jakby showType nie dzialala, badz type do niej przekazywany jest zly, natomiast kod ponizej jest okej, jak to mozliwe?

  1. FUNCTION createNewMarker(type){
  2. var uploadType = type;
  3. var marker = new GMarker(map.getCenter(), {draggable:true});
  4.  
  5.  
  6. GEvent.addListener(marker, "click", FUNCTION() {
  7. marker.openInfoWindowHtml("Marker type: <b>" + type + "</b>");
  8. });
  9.  
  10. GEvent.addListener(marker, "dragend", FUNCTION() {
  11. marker.openInfoWindowHtml("Marker type: <b>" + type + "</b>");
  12. });
  13.  
  14. map.addOverlay(marker);
  15. }
sticker
przypisujesz marker do zmiennej js ktora jest widoczna tylko w funckji musisz uzyc zmiennej globalnej
BirdWatcher
OK, wielkie dzięki, poki co wszystko działa tak jak powinno biggrin.gif
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.