Google Maps API: Uncaught TypeError: Cannot read property '__e3_' of undefined

24,760

When I moved the map definition to a point before the marked buggy code, it worked. I added the var map = new google.map.Map to right after the map options.

  var myOptions = {
     streetViewControl: false,
     overviewMapControl: true,
    zoom: 14,
    mapTypeId: google.maps.MapTypeId.ROADMAP
};

var map = new google.maps.Map(document.getElementById('weather-map'), myOptions);

// MOLNAKTIVITET
var cloudLayer = new google.maps.weather.CloudLayer();
cloudLayer.setMap(map);



/**********************************************
**    THE CODE BELOW IS CAUSING THE ERROR    **
**********************************************/

// HÖJD ÖVER / UNDER HAVSYTAN
elevator = new google.maps.ElevationService();
google.maps.event.addListener(map, 'click', getElevation);
Share:
24,760
Airikr
Author by

Airikr

Updated on April 21, 2020

Comments

  • Airikr
    Airikr over 3 years

    I'm currently use a new system for my weather website and I'm getting the following error:

    Uncaught TypeError: Cannot read property '__e3_' of undefined
    
    Xe%7Bmain,places,weather%7D.js:18
    Ve%7Bmain,places,weather%7D.js:21
    P.addListener%7Bmain,places,weather%7D.js:18
    T.(anonymous function).bindTo%7Bmain,places,weather%7D.js:27
    initializejavascript.js:109
    (anonymous function)javascript.js:4
    f.Callbacks.ojquery.min.js:2
    f.Callbacks.p.fireWithjquery.min.js:2
    e.extend.readyjquery.min.js:2
    c.addEventListener.B
    

    Here's the content in my javascript.js file which I include in my header.php (<script src="javascript.js" type="text/javascript"></script>):

    $(document).ready(function() {
        initialize();
    });
    
    var elevator;
    var geocoder;
    var map;
    
    function initialize() {
    
        // KONFIGURATION: Geocoding
        geocoder = new google.maps.Geocoder();
    
        // KONFIGURATION: Filnamn
        var weatherdata = 'fetch-information/fetch-weatherdata.php';
    
        // KONFIGURATION: Datum
        var date = new Date();
        var datetime = date.getFullYear() + '-' + 
                      (date.getMonth() < '10' ? '0' + date.getMonth() : date.getMonth()) + '-' +
                      (date.getDay() < '10' ? '0' + date.getDay() : date.getDay()) + ', ' +
                      (date.getHours() < '10' ? '0' + date.getHours() : date.getHours()) + ':' +
                      (date.getMinutes() < '10' ? '0' + date.getMinutes() : date.getMinutes()) + ':' +
                      (date.getSeconds() < '10' ? '0' + date.getSeconds() : date.getSeconds());
    
        // KONFIGURATION: Hämta adress
        var address = 'Karlstad, Sverige';
    
        // KONFIGURATION: Inställningar för kartan
        var myOptions = {
            streetViewControl: false,
            overviewMapControl: true,
            zoom: 14,
            mapTypeId: google.maps.MapTypeId.ROADMAP
        };
    
    
        // MOLNAKTIVITET
        var cloudLayer = new google.maps.weather.CloudLayer();
        cloudLayer.setMap(map);
    
    
    
        /**********************************************
        **    THE CODE BELOW IS CAUSING THE ERROR    **
        **********************************************/
    
        // HÖJD ÖVER / UNDER HAVSYTAN
        elevator = new google.maps.ElevationService();
        google.maps.event.addListener(map, 'click', getElevation);
    
    
        /* ** ** ** ** ** */
    
    
        // GOOGLE PLACES API
        var input = document.getElementById('googlemaps-search');
        var autocomplete = new google.maps.places.Autocomplete(input);
    
        autocomplete.bindTo('bounds', map);
        google.maps.event.addListener(autocomplete, 'place_changed', function() {
            var place = autocomplete.getPlace();
            alert(place.geometry.location);
        });
    
        /**********************************************
        **    THE CODE ABOVE IS CAUSING THE ERROR    **
        **********************************************/
    
    
    
        /* ** ** ** ** ** */
    
    
        // GEOCODING
        geocoder.geocode({'address' : address}, function(results, status) {
    
            // KONTROLL
            if(status == google.maps.GeocoderStatus.OK) {
    
                // KONFIGURATION: Ta bort ( och ) före och efter koordinaterna
                var old_latlong = '' + results[0].geometry.location + '';
                var new_latlong = old_latlong.substring(1, old_latlong.length - 1).replace(' ', '');
    
                // CENTERRING
                map.setCenter(results[0].geometry.location);
    
                // MARKERING: Adress
                var marker = new google.maps.Marker({
                    map: map,
                    position: results[0].geometry.location
                });
    
                // AJAX: Hämta den angivna filen
                $.ajax({
                        url: weatherdata + '?coordinates=' + new_latlong,
    
                        success: function() {
                                             console.log(datetime + ': Hämtningen av väderprognosen och den övriga informationen lyckades');
                                             $('.content-search').show();
                                             $('#load-weather').load(weatherdata + '?coordinates=' + new_latlong);
                                            },
    
                        error: function() {
                                           console.error(datetime + ': Hämtningen av väderprognosen och den övriga informationen misslyckades');
                                           $('#load-weather').hide();
                                           $('.content-search').hide();
                                           $('#message-error').show();
                                          }
                       });
    
    
            // KONTROLL
            } else {
    
                // FELMEDDELANDE
                alert('Kunde inte hämta data på grund av följande fel: ' + status);
            }
    
        });
    
    
        /* ** ** ** ** ** */
    
    
        // KARTA
        var map = new google.maps.Map(document.getElementById('weather-map'), myOptions);
    
    }
    
    
    
    /** ** ** ** ** ** ** ** ** ** ** ** **/
    
    
    
    function getElevation(event) {
        var locations = [];
        var clickedLocation = event.latLng;
        locations.push(clickedLocation);
    
        var positionalRequest = {
            'locations': locations
        }
    
        elevator.getElevationForLocations(positionalRequest, function(results, status) {
            if(status == google.maps.ElevationStatus.OK) {
                var s = results[0].elevation;
    
                if(results[0]) {
                    if(('' + parseInt(s)).charAt(0) == '-') {
                        $('#elevation').html('Cirka ' + number_format(('' + parseInt(s)).substring(1)) + ' meter under havsytan');
                    } else {
                        $('#elevation').html('Cirka ' + number_format(parseInt(s)) + ' meter över havsytan');
                    }
                } else {
                    alert('Inget resultat hittades');
                }
            } else {
                alert('Det gick inte att hitta höjdskillnaden på grund av följande: ' + status);
            }
        });
    }
    

    The problem is that the system is quite the same as in my previous system and I have the same "code structure" on both of them and still I'm getting this error message on the new system. I don't know why I'm getting it so I'm asking you know: how can I fix my problem?

    Thanks in advance.

  • Heitor Chang
    Heitor Chang over 11 years
    Hope that will solve your trouble. I turned off Places and Ajax so please check those are working correctly.
  • Andrew Leach
    Andrew Leach over 11 years
    @ErikEdgren: the issue (for future reference) is that you attempted to add a listener to map without actually assigning the google.maps.Map to that variable. So the API tried to get some details from map and found it undefined.
  • Airikr
    Airikr over 11 years
    Ah! Thank you, Andrew :) I'll keep that in mind in the future.