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);
Author by
Airikr
Updated on April 21, 2020Comments
-
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 myheader.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 over 11 yearsHope that will solve your trouble. I turned off Places and Ajax so please check those are working correctly.
-
Andrew Leach over 11 years@ErikEdgren: the issue (for future reference) is that you attempted to add a listener to
map
without actually assigning thegoogle.maps.Map
to that variable. So the API tried to get some details frommap
and found it undefined. -
Airikr over 11 yearsAh! Thank you, Andrew :) I'll keep that in mind in the future.