2012-04-20 23 views
5

Estoy uso actualmente un nuevo sistema para mi sitio web tiempo y estoy recibiendo el siguiente error:API de Google Maps: TypeError no detectada: No se puede leer la propiedad '__e3_' de la indefinida

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 

Aquí está el contenido en mi archivo javascript.js que incluyo en mi 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); 
     } 
    }); 
} 

el problema es que el sistema es exactamente lo mismo que en mi sistema anterior y tengo la misma "estructura de código" en las que uno y todavía Estoy recibiendo este error mensaje en el nuevo sistema. No sé por qué lo recibo, así que le pregunto: ¿cómo puedo solucionar mi problema?

Gracias de antemano.

Respuesta

8

Cuando moví la definición del mapa a un punto anterior al código del buggy marcado, funcionó. Agregué el var map = new google.map.Map justo después de las opciones del mapa.

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); 
+0

Muchas gracias! ^^ – Erik

+0

Espero que eso resuelva su problema. Apagué Places y Ajax, así que compruebe que estén funcionando correctamente. –

+0

Tu respuesta resolvió mi problema, así que gracias una vez más :) – Erik

Cuestiones relacionadas