Google maps laad niet soepel moet met settimeout

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Daniel van Seggelen

Daniel van Seggelen

03/04/2017 08:27:23
Quote Anchor link
Ik probeer googlemaps zo snel mogelijk te laden runnen, maar ik bepaalde functies zoals map.setCenter moeten met een timeout anders werken ze niet, maar geeft ook geen foutmelding:

gmaps.js waar de map word aangemaakt en de functies worden geladen.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
        <?php if ($_SESSION['lat']=='' && $_SESSION['lng'] == '' )
            {
?>

                
            <?php
            } else {
            ?>
    
                setTimeout(function() {
                map.setCenter( new google.maps.LatLng(<?=$_SESSION['lat']?>, <?=$_SESSION['lng']?> ));
                google.maps.event.trigger(map, 'resize');                    
                    }, 1500);
            <?php
            }
        ?>


In mijn footer heb ik dit staan:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
    <script src="<?=HTML_ROOT?>js/script.js" defer></script>
    <script src="<?=HTML_ROOT?>js/markerclusterer.js"></script>
    
    <?php
    require_once(DOC_ROOT.'inc/gmapjs.php');
    ?>


in script.js roep ik google maps aan met een callback

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
document.addEventListener('DOMContentLoaded', function () {
  if (document.querySelectorAll('#map').length > 0)
  {
    if (document.querySelector('html').lang)
      lang = document.querySelector('html').lang;
    else
      lang = 'en';

    var js_file = document.createElement('script');
    js_file.type = 'text/javascript';
    js_file.src = 'https://maps.googleapis.com/maps/api/js?v=3.28&callback=initMap&key=xxxxxxxxxxxxxxxxxxxxxxx&language=' + lang+' async defer';
    document.getElementsByTagName('head')[0].appendChild(js_file);

    
  }
});

var map;


Daarnaast een hoop andere problemen, zoals een grijs vlak of als ik buiten de wereld 'drag', dan is hij grijs, dat heb ik verholpen met:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
google.maps.event.addListener(map, 'drag', function(){

    var proj =map.getProjection();
    var bounds = map.getBounds();
    var sLat =map.getBounds().getSouthWest().lat();
    var nLat = map.getBounds().getNorthEast().lat();
    if (sLat < -85 || nLat > 85) {
        // alert('Gray area visible');
        map.setOptions({
              center: new google.maps.LatLng(
                  1.469260 , // set Latitude for center of map here
                  1.582031) // set Langitude for center of map here
              });        
       // Map.fitBounds(boundsNew);  Or Define bound that u want show
     }
});


Wat kan ik nu doen dat hij laad zonder de settimeouts te gebruiken?
 
Er zijn nog geen reacties op dit bericht.



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.