Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [Google Maps API v3] ukrywanie markerów
Forum PHP.pl > Forum > Po stronie przeglądarki
warland
Mam taki kod:

  1. var bounds = new google.maps.LatLngBounds();
  2. var i, center;
  3.  
  4. for (i = 0; i < shape.length; i++) {
  5. bounds.extend(shape[i]);
  6.  
  7. }
  8. center = bounds.getCenter();
  9. var image = 'https://developers.google.com/maps/documentation/javascript/examples/full/images/beachflag2.png';
  10. var marker = new google.maps.Marker({
  11. position: { lat: center.lat() + land_size, lng: center.lng() },
  12. map: map,
  13. zIndex: 10,
  14. icon: image
  15. });
  16. google.maps.event.addListener(map, 'zoom_changed', function() {
  17. zoom = map.getZoom();
  18.  
  19. if (zoom < 7) {
  20. marker.setVisible(false);
  21. } else {
  22. marker.setVisible(true);
  23. }
  24. });
  25. marker.setVisible(false);



Problem polega na tym że w chwili odkrycia markerów ładuje się tylko jeden (mimo że np. jest ich 5)
Nie wiem jak ten problem rozwiązać.
Bez ukrywania markerów wszystko działa jak należy i pojawiają się wszystkie.

Czy jest ktoś kto może mi pomóc?
nospor
wg powyzszegp kodu tworzysz tylko jeden marker a nie 5
nospor
NA chwile obecna pokazales dwa niepowiazane ze soba kody. Tylko na jednym z nich widac ze tworzysz marker i tworzysz tylko jeden marker. Czy jestes w stanie pokazac kod gdzie tworzysz pozostale 4 markery?
nospor
Pewnie powiesz ze sie czepiam, ale w kodzie tym teraz nie widze miejsca gdzie odkrywasz marker w zaleznosci od levelu zoom...

Dobra, niewazne, widze wiecej i tak nie dostane.
Przyczyna twojego problemu jest banalna: w petli tworzysz zmienna marker, ktora w kazdej iteracji nadpisujesz wiec sila rzeczy bedzie ci dzialac tylko ostatni marker przy zmianie zoom. Markery masz zapisywac do tablicy, KTORA NIE BEDZIE nadpisywana w petli za kazdym razem co teraz robisz z tablica markers i notabene nigdzie nie uzywasz. Potem w podczas zmiany zoom masz leciec po tej tablicy a nie po zmiennej marker.
warland
rozumiem. Czyli dla mnie na teraz to trochę czarna magia z tym utworzeniem tablic i jeszcze odpowiednie to połączenie ze skryptem by działało w ten sposób jaki sobie zamierzyłem.

Dziękuję za wyjaśnienie.

a to : "markers.push(marker);" jest w stanie jakoś rozwiązać problem? czy to też z tablicami jest związane?
nospor
Cytat
a to : "markers.push(marker);" jest w stanie jakoś rozwiązać problem? czy to też z tablicami jest związane?

Tak,ten kod wlasnie wklada marker do tablicy markers.
warland
Dziękuje.

Czy ktoś ma wiedzę by mi pomóc z tym kodem aby można było taką tablicę utworzyć? bo na razie każda próba z tym markers.push spala na panewce.
nospor
A mozesz pokazac jedna z tych prob?
warland
  1. var bounds = new google.maps.LatLngBounds();
  2. var i, center;
  3. var markers = [];
  4.  
  5. for (i = 0; i < shape.length; i++) {
  6.  
  7. center = bounds.getCenter();
  8. var image = 'https://developers.google.com/maps/documentation/javascript/examples/full/images/beachflag.png';
  9. var marker = new google.maps.Marker({
  10. position: { lat: center.lat() + land_size, lng: center.lng() },
  11. map: map,
  12. zIndex: 10,
  13. icon: image
  14. });
  15. bounds.extend(shape[i]);
  16. markers.push(marker);
  17. }


przepraszam ale kompletnie nie potrafię tego ogarnąć. Wszystko na zasadzie każdej informacji z google sprawdzam by jakoś to wdrożyć. Zazwyczaj potrafię znaleźć rozwiązanie jak tylko ktoś mi coś podpowie gdzie szukać, ale tym razem każda próba zakończona porażką.
nospor
zapewne ten kod co tu masz znowu masz w petli php przez co wszystko co tam masz najwyzklej w swiecie nadpisujesz w kazdym obrocie petli...
Mowilem ci juz, ze tablicy z markerami nie mozesz miec w petli

O to
var markers = [];
ma byc poza petla
warland
Próbowałem przenosząc to w sekcje
  1. // Set maps variables
  2. var map_update_interval = <?php echo $update_timespan; ?>;
  3. var building_minimum = <?php echo $building_minimum; ?>;
  4. var leaderboard_update_interval = <?php echo $leaderboard_update_interval_minutes; ?> * 60 * 1000;
  5. var infoWindow = false;
  6. var boxes = [];
  7. var markers = [];

i też nic z tego
nospor
Zrozum, ze to nie wszystko. Nigdzie nie pokazales kodu gdzie czytasz te tablice i na jej podstawie uaktywaniasz markery. Caly czas w tym watku pokazujesz urywki kodow i my mamy sie domyslac czy cos jeszcze jest czy nie. Bawi cie to? Bo mnie osobiscie coraz mniej.
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.