Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> google maps i filtrowanie markerów
qbas-s
post 22.02.2014, 15:59:11
Post #1





Grupa: Zarejestrowani
Postów: 304
Pomógł: 1
Dołączył: 28.06.2009

Ostrzeżenie: (0%)
-----


mam wiele markerów na mapie w różnych obszarach świata. Markery pokazują punkty dystrybucyjne. Puntów o nazwie "xyz" może być wiele w dowolnej lokalizacji na świecie. Jak zrobić aby po wybraniu z listy rozwijanej "xyz" pokazywały się tylko punkty dystrybutora "xyz"?
Go to the top of the page
+Quote Post
timon27
post 22.02.2014, 20:56:12
Post #2





Grupa: Zarejestrowani
Postów: 578
Pomógł: 69
Dołączył: 15.04.2007
Skąd: Wrocław

Ostrzeżenie: (0%)
-----


Masz markery?
To znaczy ż umiesz je dodawać.
usuwanie jest równie proste:
https://developers.google.com/maps/document...s/marker-remove

Reszte robisz w js.
Go to the top of the page
+Quote Post
qbas-s
post 22.02.2014, 21:35:03
Post #3





Grupa: Zarejestrowani
Postów: 304
Pomógł: 1
Dołączył: 28.06.2009

Ostrzeżenie: (0%)
-----


ok ale w tym dokumencie jest jak usunąć wszystkie markery a jak usunąć jeden z określoną lokalizacją? Jeśli to będę wiedział to kilka markerów usunę za pomocą pętli
Go to the top of the page
+Quote Post
timon27
post 23.02.2014, 14:59:05
Post #4





Grupa: Zarejestrowani
Postów: 578
Pomógł: 69
Dołączył: 15.04.2007
Skąd: Wrocław

Ostrzeżenie: (0%)
-----



Usuń wzystkie, a potem dodaj tylko te które potrzebujesz.

Ten post edytował timon27 23.02.2014, 14:59:14
Go to the top of the page
+Quote Post
qbas-s
post 26.02.2014, 12:30:09
Post #5





Grupa: Zarejestrowani
Postów: 304
Pomógł: 1
Dołączył: 28.06.2009

Ostrzeżenie: (0%)
-----


no tak nie pomyślałem o tym facepalmxd.gif dzięki:)

ok działa usuwanie markerów ale gdy powiększe/pomniejsze mapkę to pojawiają się na nowo? jak to obejść?
Go to the top of the page
+Quote Post
widmo_91
post 26.02.2014, 12:39:53
Post #6





Grupa: Zarejestrowani
Postów: 109
Pomógł: 25
Dołączył: 10.08.2009

Ostrzeżenie: (0%)
-----


Tego nie trzeba obejść bo to nie jest standardowe zachowanie.
Popraw skrypty albo usuwaj od nowa markery przy zmianie zooma
Go to the top of the page
+Quote Post
qbas-s
post 26.02.2014, 14:00:42
Post #7





Grupa: Zarejestrowani
Postów: 304
Pomógł: 1
Dołączył: 28.06.2009

Ostrzeżenie: (0%)
-----


nie mogę usuwać markerów po zoomowaniu bo to trochę mija się z celem - chce usunąć wszystkie a potem dodać tylko wybrane. Możecie mi wskazać co robię źle, że po zoomie pojawiają się na nowo markery? To jest wersja robocza więc trochę bałaganu jest.

[JAVASCRIPT] pobierz, plaintext
  1.  
  2. var geocoder;
  3. var map;
  4. var markers = [];
  5. var myLatlng;
  6. var position;
  7.  
  8. function setAllMap(map) {
  9. for (var i = 0; i < markers.length; i++) {
  10. markers[i].setMap(map);
  11. }
  12. }
  13.  
  14. function clearMarkers() {
  15. setAllMap(null);
  16. }
  17.  
  18. function deleteMarkers() {
  19. clearMarkers();
  20. marker = [];
  21. }
  22.  
  23.  
  24. function initialize(address, zoome) {
  25. var activeWindow;
  26.  
  27. geocoder = new google.maps.Geocoder();
  28.  
  29. var mapOptions = {
  30. zoom: zoome,
  31. center: position,
  32. mapTypeId: google.maps.MapTypeId.ROADMAP
  33. }
  34.  
  35. map = new google.maps.Map(document.getElementById("company_map"), mapOptions);
  36.  
  37. showAddress(address, zoome);
  38.  
  39.  
  40.  
  41. var fluster = new Fluster2(map);
  42. {/literal}
  43. {foreach from=$company->list.markers item=i key=k}
  44. {literal}
  45. var infoWindow{/literal}{$k}{literal} = new google.maps.InfoWindow({
  46. content: '{/literal}<span class="testowo" style="font-size:12px"><strong>{$i.name}</strong><br/>{$i.zip} {$i.city}<br/>{$i.address}<br/>{$i.phone} {$i.email}{literal}</span>'
  47. });
  48. {/literal}
  49. {/foreach}
  50. {literal}
  51. {/literal}
  52.  
  53. {foreach from=$company->list.markers item=i key=k}
  54. {literal}
  55. var marker{/literal}{$k}{literal} = new google.maps.Marker({
  56. position: new google.maps.LatLng({/literal}{$i.lat}{literal}, {/literal}{$i.lan}{literal}),
  57. title: '{/literal}{$i.name}{literal}'
  58. });
  59. markers.push(marker{/literal}{$k}{literal});
  60. google.maps.event.addListener(marker{/literal}{$k}{literal}, 'click', function() {
  61. if (activeWindow != null)
  62. activeWindow.close();
  63. infoWindow{/literal}{$k}{literal}.open(map, marker{/literal}{$k}{literal});
  64. //infoWindow{/literal}{$k}{literal}.open(map, marker{/literal}{$k}{literal});
  65. activeWindow = infoWindow{/literal}{$k}{literal};
  66. });
  67. // Add the marker to the Fluste r
  68. fluster.addMarker(marker{/literal}{$k}{literal});
  69.  
  70. {/literal}
  71. {/foreach}
  72.  
  73. {literal}
  74.  
  75.  
  76. fluster.styles = {
  77.  
  78. 0: {
  79. image: 'http://gmaps-utility-library.googlecode.com/svn/trunk/markerclusterer/1.0/images/m1.png',
  80. textColor: '#FFFFFF',
  81. width: 53,
  82. height: 52,
  83. },
  84.  
  85. 10: {
  86. image: 'http://gmaps-utility-library.googlecode.com/svn/trunk/markerclusterer/1.0/images/m2.png',
  87. textColor: '#FFFFFF',
  88. width: 56,
  89. height: 55
  90. },
  91. 20: {
  92. image: 'http://gmaps-utility-library.googlecode.com/svn/trunk/markerclusterer/1.0/images/m3.png',
  93. textColor: '#FFFFFF',
  94. width: 66,
  95. height: 65
  96. }
  97. };
  98.  
  99.  
  100. fluster.initialize();
  101.  
  102. }
  103.  
  104. function showAddress(address, zoom) {
  105. geocoder.geocode({'address': address}, function(results, status) {
  106. if (status == google.maps.GeocoderStatus.OK) {
  107. map.setCenter(results[0].geometry.location);
  108. map.setZoom(zoom);
  109.  
  110.  
  111. } else {
  112. alert("Geolokalizacja się nie udała, powód: " + status);
  113. }
  114. });
  115. }
  116.  
  117.  
  118. </script>
  119. {/literal}
[JAVASCRIPT] pobierz, plaintext


Ten post edytował qbas-s 26.02.2014, 14:15:36
Go to the top of the page
+Quote Post
widmo_91
post 26.02.2014, 16:20:18
Post #8





Grupa: Zarejestrowani
Postów: 109
Pomógł: 25
Dołączył: 10.08.2009

Ostrzeżenie: (0%)
-----


Nie nazywaj markerów: marker1, marker2 ..., tylko używaj indeksów tablicy wtedy obędzie się bez foreachów i literali i będziesz mógł dynamicznie dodawać markery.

Wracając do rozwiązania to winny jest obiekt Fluster cokolwiek to jest. Żeby skutecznie z niego usunąć wszystkie markery powinieneś mieć w nim jakąś metodę typu: clear, clearAll, removeMarkers. Po prostu oprócz usunięcia markerów z mapy musisz je usunąć także z Flustera.
Go to the top of the page
+Quote Post
qbas-s
post 26.02.2014, 16:40:11
Post #9





Grupa: Zarejestrowani
Postów: 304
Pomógł: 1
Dołączył: 28.06.2009

Ostrzeżenie: (0%)
-----


próbowałem to już zrobić za pomocą tablicy ale nie działało. Natomiast fluster to jest to http://www.fusonic.net/en/blog/2009/12/16/...e-improvements/
Go to the top of the page
+Quote Post
widmo_91
post 26.02.2014, 17:04:33
Post #10





Grupa: Zarejestrowani
Postów: 109
Pomógł: 25
Dołączył: 10.08.2009

Ostrzeżenie: (0%)
-----


Tak znowu poza tematem poczytaj o metodzie php json_encode bardzo ułatwiłaby Ci pracę.

Wracając do tematu to napisałem co masz zrobić. Usunąć z obiektu fluster markery które wcześniej do niego dodałeś. Nie mogę znaleźć api do tego flustera więc sam musisz wyszukać prawdopodobnie będzie to removeMarkers lub clear.

Co do zagęszczeń to istnieje bardziej przebadana klasa (bo Fluster to jeszcze wersja beta) nazywa sie markerCluster można także używać pluginu jquery $.goMap który korzysta z tej klasy. Jak one wypadają w porównaniu szybkości? Nie mam pojęcia ale markerCluster jest szerzej stosowana.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 24.05.2024 - 22:48