Google maps API:无法读取未定义的属性“__e3_”

时间:2011-08-14 16:29:19

标签: javascript google-maps-api-3

这是我正在添加的监听器 -

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 个答案:

答案 0 :(得分:51)

将您的监听器移动到初始化函数中。

答案 1 :(得分:9)

很难说只有一小部分代码,但听起来似乎无法找到“地图”。

您的地图变量不是全局的,或者该代码以某种方式可访问,或者地图未使用以下内容创建:

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

在尝试添加新的单击侦听器之前。

答案 2 :(得分:2)

我不知道这对您是否有问题,因为我们没有看到您链接到谷歌地图库的代码部分,但我刚刚发现我收到此错误的原因来自试图包括“可视化”库。幸运的是我不再需要使用它了。

我有这个:

<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 错误。

顺便说一句,这个错误对我来说并不一致,我无法弄清楚 如何复制它。我不得不坐在那里一遍又一遍地刷新,直到发生错误。

我希望这有助于某人。

答案 3 :(得分:1)

在异步加载数据时会发生这种情况。您可以通过将document.ready代码包含在ajaxStop函数中来避免这种情况

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

答案 4 :(得分:1)

在我的情况下,全局映射变量已在初始化程序中被覆盖,但我想在另一个函数中使用该全局变量,这导致了问题。

答案 5 :(得分:0)

是的,第二个...... map变量必须在使用之前和之外声明。由于谷歌地图听众无法找到它。

答案 6 :(得分:0)

这样的东西?

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

答案 7 :(得分:0)

在我的情况下google.maps.event.addListener(marker, 'click', function() {标记变量未定义。因而错误。可能对某人有用。