2011-08-14 23 views
29

Đây là Listener tôi thêm -bản đồ Google API: Không thể đọc thuộc '__e3_' không xác định

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

Nhưng nó được tạo ra lỗi này trong giao diện điều khiển -

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

Cố gắng tìm kiếm. Nhưng không có giải pháp.

+3

bạn có tìm thấy gì không? Tôi cũng gặp vấn đề tương tự – J4N

Trả lời

51

Di chuyển người nghe của bạn vào chức năng khởi tạo.

+11

Đây có phải là nhận xét không? –

+1

Điều này làm việc cho tôi! – CristiC

+0

Cuối cùng! Cảm ơn bạn! –

9

Thật khó để chỉ nói với một phần nhỏ mã của bạn, nhưng có vẻ như nó không thể tìm thấy "bản đồ".

Hoặc biến bản đồ của bạn không phải là toàn cầu, hoặc bằng cách nào đó truy cập bằng mã mà HOẶC bản đồ không được tạo ra với:

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

trước khi bạn cố gắng và thêm một người biết lắng nghe nhấp chuột mới.

+0

'bản đồ' là toàn cầu. Tôi đã cập nhật câu hỏi bằng mã đầy đủ. kiểm tra xem nó ra. –

1

Điều này xảy ra khi tải dữ liệu của bạn không đồng bộ. Bạn có thể tránh điều đó bằng cách bao gồm cả mã document.ready của bạn vào chức năng ajaxStop

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

Bằng cách nào dưới dạng này có liên quan đến câu hỏi? –

2

Tôi không biết nếu điều này có thể là một vấn đề cho bạn vì chúng ta không nhìn thấy một phần của mã của bạn nơi bạn đang liên kết vào thư viện bản đồ google, nhưng tôi vừa phát hiện ra lý do tôi nhận được lỗi này là từ việc cố gắng đưa thư viện "visualizations" vào. May mắn là tôi không cần phải sử dụng nó nữa.

Tôi có điều này:

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

và thay đổi nó như thế này:

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

tôi không còn nhận được sự e3 lỗi.

Nhân tiện, lỗi này đối với tôi không nhất quán và tôi không thể tìm ra cách để sao chép. Tôi đã phải ngồi đó và nhấn làm mới hơn và hơn cho đến khi lỗi xảy ra.

Tôi hy vọng điều này sẽ giúp ai đó.

0

Có, thứ hai ... Biến bản đồ phải được khai báo bên ngoài và trước khi sử dụng. Khi người nghe bản đồ google không thể tìm thấy nó.

+1

Điều này sẽ được thêm dưới dạng nhận xét chứ không phải là câu trả lời. –

+0

Đôi khi danh tiếng của người dùng quá thấp để nhận xét, vì vậy tất cả những gì họ có thể làm là thêm câu trả lời – Hanno

1

Trong trường hợp của tôi, biến bản đồ toàn cục đã bị ghi đè trong trình khởi tạo nhưng tôi muốn sử dụng biến toàn cục đó trong một hàm khác và điều này gây ra sự cố.

0

Một cái gì đó như thế này?

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

Trong trường hợp của tôi google.maps.event.addListener(marker, 'click', function() { Biến đánh dấu chưa được xác định. Và do đó lỗi. Có thể hữu ích cho ai đó.

Các vấn đề liên quan