2011-08-14 21 views
29

Aquí está el oyente que estoy añadiendo -los mapas de Google API: No se puede leer la propiedad '__e3_' de la indefinida

var map; 
    var geocoder; 
    function initialize() { 
     var myOptions = { 
      zoom: 8, 
      center: new google.maps.LatLng(22, 88), 
      mapTypeId: google.maps.MapTypeId.ROADMAP 
     }; 
     map = new google.maps.Map(document.getElementById('map_canvas'), myOptions); 
    } 
    //google.maps.event.addDomListener(window, 'load', initialize); 
    google.maps.event.addListener(map, 'click', function(event) { 
     geocoder = new google.maps.Geocoder(); 
     geocoder.geocode({ 'latLng': event.latLng}, function(results, status) { 

      if (status == google.maps.GeocoderStatus.OK) { 
       alert(results); 
      } else { 
       alert("Geocode was not successful for the following reason: " + status); 
      } 
     }); 
    }); 

Pero está generando este error en la consola -

Uncaught TypeError: Cannot read property '__e3_' of undefined 
Ke 
Ie 
R.addListener 
(anonymous function) 

intentado buscar. Pero no tengo solución.

+3

¿Encontraste algo? Tengo el mismo problema – J4N

Respuesta

51

Mueva su oyente a la función de inicialización.

+11

¿Debería ser este un comentario? –

+1

¡Esto funcionó para mí! – CristiC

+0

¡Finalmente! ¡Gracias! –

9

Es difícil de decir con solo una pequeña parte de su código, pero parece que no puede encontrar el "mapa".

Puede ser que su variable de mapa no es global, o de alguna manera accesible por ese código o en el mapa no fue creado con:

map = new google.maps.Map(....) 

antes de tratar de agregar un nuevo detector de clics.

+0

'map' es global. Actualicé la pregunta con el código completo. Echale un vistazo. –

1

Esto ocurre cuando carga sus datos de forma asíncrona. Usted puede evitar que al incluir el código de document.ready en la función ajaxStop

$().ready(function() { 
    $(document).ajaxStop(function() { 
     /* your code here ?*/ 
    }); 
}); 
+5

¿Cómo se relaciona esto de alguna forma con la pregunta? –

2

no sé si esto puede ser un problema para usted, ya que no se ve la parte de su código en el que está vinculando a la biblioteca de google maps, pero descubrí que la razón por la que recibía este error era por tratar de incluir la biblioteca de "visualizaciones". Afortunadamente, ya no necesitaba usarlo.

Tenía esta:

<script type="text/javascript" src="http://maps.google.com/maps/api/js?libraries=geometry,visualization&sensor=true"></script> 

y lo cambió a esto:

<script type="text/javascript" src="http://maps.google.com/maps/api/js?libraries=geometry&sensor=true"></script> 

ya no me sale el error e3 .

Por cierto, este error para mí no fue coherente y no pude averiguar cómo para replicarlo. Tuve que sentarme allí y pulsar actualizar una y otra vez hasta que se produjo el error.

Espero que esto ayude a alguien.

0

Sí, en segundo lugar que ... La variable del mapa debe declararse fuera y antes de su uso. Como el oyente google maps no puede encontrarlo.

+1

Esto debe agregarse como comentario, no como respuesta. –

+0

A veces la reputación de un usuario es demasiado baja para comentar, por lo que todo lo que pueden hacer es agregar una respuesta – Hanno

1

En mi caso fue que la variable de mapa global se había sobrescrito en el inicializador pero quería usar esa variable global en otra función y esto causó el problema.

0

¿Algo como esto?

var lati,longt; //contains latitude and longitude 

func newLatLOng(){ 
    get new value of latLong 
    initMap(); 

} 

var map = 0; 
function initMap() { 
    if (map ===0) 
    { 
    //load first time 
      lati= 28.5072216; 
      longt= 77.4971153; 
      map = new google.maps.Map(document.getElementById('map'), { 
        center: {lat: lati, lng: longt}, 
        zoom: 13 
      }); 
    }else 
    { 
      var geolocation = { lat:lati, 
          lng: longt }; 
      google.maps.event.trigger(map, 'resize'); 
      map.setCenter(geolocation); 
    } 
0

En mi caso google.maps.event.addListener(marker, 'click', function() { La variable marcador fue definido. Y de ahí el error. Puede ser útil para alguien.

Cuestiones relacionadas