2011-08-14 95 views
29

財產「__e3_」這是我加入了監聽器 -谷歌地圖API:無法讀取的不確定

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) 

試圖尋找。但沒有解決。

+3

你發現了什麼嗎?我有同樣的問題 – J4N

回答

51

將您的監聽器移入初始化函數。

+11

這是一條評論嗎? –

+1

這對我有用! – CristiC

+0

終於!謝謝! –

9

只用一小部分代碼很難分辨,但聽起來好像找不到「地圖」。

無論是地圖變量不是全局的,或通過代碼以某種方式訪問​​或地圖不是用創建:你嘗試添加一個新的點擊收聽之前

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

+0

'地圖'是全球性的。我用完整的代碼更新了這個問題。一探究竟。 –

1

在異步加載數據時發生這種情況。您可以避免通過包括您的document.ready代碼到ajaxStop功能

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

這是如何以任何形式與問題相關的? –

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錯誤。

順便說一下,這個錯誤對我來說是不一致的,我無法弄清楚如何複製它。我不得不坐在那裏反覆刷新,直到發生錯誤。

我希望這可以幫助別人。

0

是的,其次......地圖變量必須在外部聲明並在其使用之前聲明。由於谷歌地圖偵聽器無法找到它。

+1

這應該被添加爲評論,而不是答案。 –

+0

有時用戶的聲譽太低而無法評論,所以他們只能添加答案 – Hanno

1

在我的情況下,全局映射變量在初始化器中被覆蓋,但我想在另一個函數中使用該全局變量,這導致了問題。

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

在我的情況下google.maps.event.addListener(marker, 'click', function() {標記變量未定義。因此錯誤。可能對某人有用。