• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Nie działa getBounds(), dlaczego?

Object Storage Arubacloud
0 głosów
155 wizyt
pytanie zadane 6 stycznia 2016 w JavaScript przez Klik Obywatel (1,540 p.)

Witam.

Dlaczego w poniższym kodzie nie działa mi polecenie getBounds()? Cały czas wyrzuca mi błąd undefind.

function mapaStart()
{
    var opcjeMapy =
    {
        zoom: 5,
        center: new google.maps.LatLng(53.45211,13.3921124),
        mapTypeId: google.maps.MapTypeId.SATELLITE,
        disableDefaultUI: true
    };
   var mapa 	= new google.maps.Map(document.getElementById("mapka"), opcjeMapy);



    var obszar = mapa.getBounds();

    var lewyDolny = obszar.getSouthWest();
    var prawyGorny = obszar.getNorthEast();


    var lewo 	= lewyDolny.lng();
    var prawo 	= prawyGorny.lng();
    var gora 	= prawyGorny.lat();
    var dol		= lewyDolny.lat();


    var prawyDolny 	= new google.maps.LatLng(dol,prawo);
    var lewyGorny	= new google.maps.LatLng(gora,lewo);

    var srodek = mapa.getCenter();

    console.log(obszar);

}
mapaStart();

I kod HTML.

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script src="http://maps.google.com/maps/api/js" type="text/javascript"></script>
</head>
<body>
<div id="mapka" style="width: 700px; height: 500px; border: 1px solid black; background: black;">

</div>

<script src="es6.js"></script>
</body>
</html>

Z tego co widziałem na stronie google to wszystko robię poprawnie a mimo to nie działa.

Dziękuję

1 odpowiedź

+2 głosów
odpowiedź 6 stycznia 2016 przez ScriptyChris Mędrzec (190,190 p.)
wybrane 6 stycznia 2016 przez Klik
 
Najlepsza

Może mapa jeszcze nie zdąży się wczytać, a Ty już chcesz coś z niej pozyskać? Umieść getBounds() w funkcji, która będzie wywoływana callback'iem. Callback podaj do funkcji, która pobiera mapę - więc gdy ona zakończy działanie, to wywoła Ci funkcję, w której masz getBounds()

Powinno działać... jeśli oczywiście tu tkwi problem :)

Albo spróbuj podpiąć to pod bounds_change Listenera:

http://stackoverflow.com/a/2833015/4983840

google.maps.event.addListener(mapa, 'bounds_changed', function() {
         alert(mapa.getBounds());
      });

 

komentarz 7 stycznia 2016 przez ScriptyChris Mędrzec (190,190 p.)

To by znaczyło, że w funkcji mapaStart() coś nie zdąży się wykonać, a callback już jest odpalany. Musiałbyś sprawdzić, co w tej funkcji nie zdąża się załadować :) Np. w ciele funkcji mapaStart(), przed wywołaniem callbacka, wpisz to:

if (mapa) console.log('mapa is loaded');
if (dymek) console.log('dymek is loaded');

Jeśli któryś z komunikatów wyświetli się, to znaczy, że dana zmienna nie zwraca 'undefined', null, 0, false, NaN lub nie jest pustym stringiem (czyli "została załadowana", lub ma wartość true). Podobnie możesz sprawdzić klucze dla obiektu opcjeMapy{}.

Jeśli okaże się, że wszystko jest ok, to nie wiem o co chodzi.

komentarz 9 stycznia 2016 przez Klik Obywatel (1,540 p.)
No i okazuje się że wszystko jest ok. Oba komunikaty się wyświetlają a zmienna obszar dalej jest undefined.

No nic dzięki za próbę pomocy. Obejdę ten problem przez zastosowanie setTimeout.

Pozdrawiam
komentarz 9 stycznia 2016 przez ScriptyChris Mędrzec (190,190 p.)

Oba komunikaty się wyświetlają a zmienna obszar dalej jest undefined.

Hmm... To spróbuj tak: 

if (mapa) console.log('mapa ', mapa);
if (dymek) console.log('dymek ', dymek);

Jeśli wyświetli obie zmienne, to wtedy zrób tak:

if (mapa && dymek)
{
   callback();
}

To mój ostatni pomysł, jak by to uruchomić z callback'a. Chociaż jeszcze można by sprawdzić "gotowość" obiektu opcjeMapy{}; ale nie wiem jak.

komentarz 9 stycznia 2016 przez Klik Obywatel (1,540 p.)
Dalej kupa. Pewnie jest tak jak napisałeś w pierwszym poście. O ile wszystko "w teorii" się wczytało to nadal brakuje pewnie jakichś elementów które nie pozwalają na pobranie getBounds. Więc lepiej skorzystać z tego listenera 'bounds_changed' i przy jego pomocy odpalić getBounds.

Dzięki za pomoc.
komentarz 9 stycznia 2016 przez ScriptyChris Mędrzec (190,190 p.)
Wolałbym jednak wiedzieć (dla siebie, w razie czego na przyszłość) - dlaczego z callback to nie działa :)

Czy jak podpinasz Google API, to tam na końcu masz callback (w linku)? Jeśli jest, a powinien być, to do której funkcji on się odnosi? Może w tamtej funkcji trzeba zawrzeć na końcu callback?

Podobne pytania

+1 głos
1 odpowiedź 248 wizyt
0 głosów
3 odpowiedzi 758 wizyt
pytanie zadane 13 maja 2016 w JavaScript przez makoso Mądrala (7,380 p.)
+1 głos
1 odpowiedź 134 wizyt
pytanie zadane 18 sierpnia 2021 w PHP przez s85 Nowicjusz (200 p.)

92,576 zapytań

141,426 odpowiedzi

319,652 komentarzy

61,961 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...