Подтвердить что ты не робот

API карт Google: невозможно прочитать свойство "__e3_" из undefined

Вот слушатель, который я добавляю -

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);
            }
        });
    });

Но это порождает эту ошибку в консоли -

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

Пробовал поиск. Но не получил решения.

4b9b3361

Ответ 1

Переместите слушателя в функцию инициализации.

Ответ 2

Трудно сказать лишь небольшую часть вашего кода, но похоже, что он не может найти "карту".

Либо ваша переменная карты не является глобальной, либо каким-либо образом доступна этим кодом ИЛИ карта не была создана с помощью:

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

прежде чем пытаться добавить нового прослушивателя.

Ответ 3

Я не знаю, может ли это быть проблемой для вас, поскольку мы не видим часть вашего кода, где вы ссылаетесь на библиотеку карт google, но я только что обнаружил причину, по которой я получал эту ошибку, от пытаясь включить библиотеку "визуализации". К счастью, мне больше не нужно было его использовать.

У меня было это:

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

и изменил его на следующее:

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

Я больше не получаю ошибку e3.

Кстати, эта ошибка для меня не была последовательной, и я не мог понять, как ее реплицировать. Мне пришлось сидеть и снова нажимать обновление, пока не произойдет ошибка.

Я надеюсь, что это поможет кому-то.

Ответ 4

Это происходит при загрузке ваших данных асинхронно. Вы можете избежать этого, включив код document.ready в функцию ajaxStop

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

Ответ 5

В моем случае это было то, что глобальная переменная карты была перезаписана в инициализаторе, но я хотел использовать эту глобальную переменную в другой функции, и это вызвало проблему.

Ответ 6

Да, во-вторых, что... Переменная карты должна быть объявлена ​​вне и до ее использования. Поскольку слушатель Google Maps не может его найти.

Ответ 7

Что-то вроде этого?

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);
    }