API карт Google: невозможно прочитать свойство '__e3_' из неопределенного - PullRequest
29 голосов
/ 14 августа 2011

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

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)

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

Ответы [ 8 ]

51 голосов
/ 31 октября 2011

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

9 голосов
/ 15 августа 2011

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

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

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

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

2 голосов
/ 07 марта 2013

Я не знаю, может ли это быть проблемой для вас, так как мы не видим ту часть вашего кода, где вы ссылаетесь на библиотеку карт 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 error.

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

Надеюсь, это кому-нибудь поможет.

1 голос
/ 18 августа 2016

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

1 голос
/ 01 августа 2012

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

$().ready(function() {
    $(document).ajaxStop(function () {
        /* your code here ?*/
    });
});
0 голосов
/ 24 января 2018

В моем случае google.maps.event.addListener(marker, 'click', function() { Переменная маркера была неопределена. И отсюда ошибка. Может быть кому-то пригодится.

0 голосов
/ 17 января 2017

Как то так?

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 голосов
/ 01 августа 2016

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...