Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: google maps - zmiana parametrów wszystkich markerów
Forum PHP.pl > Forum > Po stronie przeglądarki
expert
Witam,

przeszukałem cały net i nie mogę za bardzo nic znaleźć na ten temat.
Potrzebuję zrobić edycję istniejących już markerów. Chodzi o to, że po kliknięciu klawisza 'CTRL' chce wszystkim markerom nadać draggable:true;. Po zwolnieniu klawisza markery mają być na draggable:false;

Problem polega na tym, że nie wiem jak pobrać listę markerów na mapie i zmienić ich parametry?

EDIT:

Dobrze, znalazłem, że markersArray.push(marker); dodaje markery do tablicy. ale nie mogę znaleźć, co usuwa je z tablicy?
kamil4u
Tym możesz usunąć: https://developer.mozilla.org/pl/Dokumentac...ty/Array/splice
expert
Właściwie to push() to jest coś jak markersArray[] = marker;

Wychodzi na to, że temat bez sensu... Bo wychodzi na to, że te markery można dodawać do zwykłej tablicy i operować mini tak jak np. tablicą string-ów.

Chyba, że push ma jakieś specjalne właściwości?

okazuje się, że splice nie usunie czegoś takiego array['a12'] = Object;

Jak se z tym poradzić? Szkoda, że nie działa unset(array['a12']); wink.gif
kamil4u
To tajna broń,więc trzeba uważać( doczytaj dlaczego ): https://developer.mozilla.org/en/JavaScript.../Special/delete
expert
Co do usuwania markrów z tablicy, to mam juz opanowane. Męczę sie tylko nad ostatnią rzeczą:
  1. <body onkeyup="createKeyHandler(event);">
  2. <div id="map" style="width:100%; height:100%"></div>
  3.  
  4. <script type="text/javascript">
  5. var nrmarker = 0;
  6. var markersArray = new Array();
  7.  
  8. var mapa = new GMap2(document.getElementById('map'),{mapTypes: [G_NORMAL_MAP,G_HYBRID_MAP]});
  9. mapa.setCenter(new GLatLng(51.91716758909015, 19.13818359375),6);
  10.  
  11. // dodanie podstawowych przycisków
  12. mapa.addControl(new GLargeMapControl());
  13.  
  14.  
  15. // dodanie wyboru trybu mapy
  16. var typyMapy = mapa.getMapTypes();
  17. typyMapy[0].getName= function() { return "Mapa";}
  18. typyMapy[1].getName = function() { return "Satelita";}
  19. mapa.addControl(new GMapTypeControl());
  20.  
  21. // dodanie minimapy
  22. mapa.addControl(new GOverviewMapControl());
  23.  
  24.  
  25. // zoom (podwójne kliknięcie i płynny)
  26. mapa.enableDoubleClickZoom();
  27. mapa.enableContinuousZoom();
  28. mapa.enableScrollWheelZoom();
  29.  
  30. GEvent.addListener(mapa,'click',function(marker,punkt) {
  31. if(marker)
  32. {
  33. alert(marker.id);
  34. mapa.removeOverlay(marker);
  35. delete markersArray[marker.id];
  36.  
  37. }
  38. else if(punkt)
  39. {
  40. var marker = new GMarker(punkt,{draggable:false,clickable: false,map: mapa});
  41.  
  42. marker.id='a'+nrmarker;
  43.  
  44. markersArray[marker.id]=marker;
  45. nrmarker = nrmarker + 1;
  46.  
  47. GEvent.addListener(marker, 'dragend', function() {
  48. //alert(marker.getPoint().lat()+', '+marker.getPoint().lng());
  49. });
  50.  
  51. mapa.addOverlay(marker);
  52. //alert(marker.getPoint().lat()+', '+marker.getPoint().lng());
  53. }
  54. });
  55.  
  56. var i;
  57.  
  58. function createKeyHandler(e) {
  59. var keyPress;
  60.  
  61. if (typeof event !== 'undefined') {
  62. keyPress = event.keyCode;
  63. }
  64. else if (e) {
  65. keyPress = e.which;
  66. }
  67. //alert(keyPress);
  68. if (keyPress === 16) {
  69. for (x in markersArray)
  70. {
  71. markersArray[x].setDraggable(true);
  72. }
  73. }
  74. else if (keyPress === 17) {
  75. for (x in markersArray)
  76. {
  77. markersArray[x].setDraggable(false);
  78. }
  79. }
  80.  
  81. return false; // Prevents the default action
  82. };
  83.  
  84.  
  85.  
  86. </script>
  87. </body>


wywala mi błąd: markersArray[x].setDraggable(false) is not a function
o co chodzi?
kamil4u
O to, że nie doczytałeś o tym o czym Ci napisałem... - przynajmniej tak mi się wydaje(na 95% mam racje ), jeżeli nie to daj przykład live( kod umieść gdzieś na serwerze )

Szukaj pod: "delete pętla js"
expert
Delete nie ma tu nic do rzeczy. Bo jak dodam przez klikniecie 1 marker, i potem wciskam SHIFT to błąd dale wyskakuje. Nawet jak usunę delete markersArray[marker.id]; to jest to samo.
kamil4u
Cytat
jeżeli nie to daj przykład live( kod umieść gdzieś na serwerze )
expert
http://testowastonagm.siekier.pl/

EDIT:

próbowałem kilka funkcji z tego http://code.google.com/intl/pl/apis/maps/d...nce.html#Marker ale błąd jest ten sam, że cos tam nei jest funkcją

i pisząc tą mapę, wzorowałem siena tym: http://stackoverflow.com/questions/3811442...-in-google-maps

Edit:

Moze tu chodzi o wersję skryptu gm?

http://maps.google.com/maps/api/js?sensor=false
a
http://maps.google.com/maps?file=api&v...ZW4aVYlzI4xLdTw
może być różne. Ta dolna może nie mieć funkcji setDraggable. Ale to by było dziwne, bo nowsze by miało mniej funkcji?

EDIT:

Ten skrypt na górze (http://maps.google.com/maps/api/js?sensor=false) to jest gm v3 w którym jest już funkcja setDraggable(). Zaś ten skrypt po niżej to gm v2, gdzie tej funkcji nie ma. Tyle.

Temat zakończony
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.