2013-06-20 31 views
8

Tôi có một XML, được chuyển thành HTML qua XSLT. XML có thể chứa JavaScript, và nó dịch chính xác nó sang HTML, như tôi cũng làm trong nhiều trang khác. Nó chỉ không hoạt động với GoogleMaps, và tôi nghi ngờ, JavaScript của tôi bị lỗi ở đâu đó.InvalidStateError: "Một nỗ lực đã được thực hiện để sử dụng một đối tượng không, hoặc không còn, có thể sử dụng" trong ví dụ hướng dẫn Google Map cơ bản

Các phần có liên quan của giao diện HTML như được đăng bên dưới.

gì đang xảy ra trong HTML/trong Scripts:

  • API được nạp từ googleapis.com
  • Một div với map_canvas ID được tạo ra.
  • Khởi động hàm() được xác định, được bắt đầu qua <body onload="start();">.
  • Trong hàm này, một biến map_canvas được tạo và truyền tham chiếu tới đối tượng div có tên map_canvas.
  • Để kiểm soát, bước này đã hoạt động, tôi cung cấp cho div nền mới màu đỏ.
  • Nó hoạt động.
  • Tiếp theo, tôi muốn tạo biến var_options và đặt giá trị ban đầu cho trung tâm, thu phóng và mapTypeId.
  • Để kiểm soát, bước này đã hoạt động, tôi cung cấp cho div nền mới màu xanh lam.
  • Điều này không hoạt động, nó vẫn màu đỏ.
  • Do đó, lệnh này không được thực hiện.
  • Vì vậy, tôi kiểm tra xem tôi có thể truy cập vào đối tượng google.maps hay không.
  • nếu có, tôi cung cấp cho div nền màu xanh lá cây mới.
  • Công trình này, vì vậy tôi có thể truy cập đối tượng này.
  • Kiểm tra chéo: Nếu tôi nhận xét câu lệnh tải API, màu không thay đổi.

Với tôi, điều này có vẻ như sau bị lỗi ở đâu đó.

var map_options = { 
     center: new google.maps.LatLng(44.54, -78.54), 
     zoom: 8, 
     mapTypeId: google.maps.MapTypeId.ROADMAP 
    } 

Nhưng sau vài giờ tôi vẫn không thể hiểu được nó là gì.

<html> 
    <head> 
     ... 
     <script src="http://maps.googleapis.com/maps/api/js?sensor=false" type="text/javascript"> 
     </script> 

     <script type="text/javascript"> 
     function start() 
     { 
      var map_canvas = document.getElementById('map_canvas'); 

// If the element can be located, we make it green. Checked. 
// If we give the function another name than start, it won't be executed. Checked. 
map_canvas.style.backgroundColor = 'green'; 

      if(typeof google.maps != 'undefined') { 
// If the google.maps object exists, we make the canvas red. Checked. 
// If the API was not loaded from googleapis (commented out), it will stay green. 
map_canvas.style.backgroundColor = 'red'; 
      } 

// So why does the following not work? 
      var map_options = { 
       center: new google.maps.LatLng(44.54, -78.54), 
       zoom: 8, 
       mapTypeId: google.maps.MapTypeId.ROADMAP 
      } 
// Not arriving here: 
map_canvas.style.backgroundColor = 'blue'; 

// Before going on, I want to solve above problem, so this is commented out. 
//   var map = new google.maps.Map(map_canvas, map_options); 
// map_canvas.style.backgroundColor = 'black'; 
     } 
     </script> 
    </head> 


    <body onload="start();"> 
     ... 
     <div style="width: 400px; height: 224px;" id="map_canvas"></div> 
     ... 
    </body> 
</html> 
+1

Lỗi nào bạn nhận được trong bảng điều khiển? – Bergi

+1

Mã đã cho tôi lỗi rằng cảm biến phải đúng hoặc sai. Tôi đã thử nghiệm xung quanh một chút và thay đổi url googleapis của bạn thành '

11

Tôi thấy nguyên nhân phổ biến nhất của lỗi này đơn giản là img src không hợp lệ.

+0

Đó là trong trường hợp của tôi. +1. –

3

lỗi của tôi là một cái gì đó tương tự (đó là lý do tôi tìm thấy bài viết này), nhưng chỉ trong Internet Explorer (phiên bản 11):

File: eval code (401), Line: 39, Column: 304 

này được gây ra bởi vì tôi đã sử dụng svg-hình ảnh như dấu:

var marker = map.addMarker({ 
    lat: position.coords.latitude, 
    lng: position.coords.longitude, 
    icon : { 
     url : '/images/marker.svg' 
    } 
}); 

Chuyển sang hình ảnh png thay vì svg đã giải quyết được sự cố của tôi!

+1

Cố gắng thêm chiều cao và chiều rộng vào SVG của bạn. Xem thêm thông tin: http://stackoverflow.com/questions/23923607/custom-markers-in-google-maps-not-showing-up-in-firefox#answer-24280941 – Promo

+0

Cảm ơn @ Promo, đó chính xác là những gì Tôi cần. Nhận xét của bạn có thể là một câu trả lời riêng nếu bạn hỏi tôi. – marcvangend

+0

@Promo cảm ơn vì liên kết đã giải quyết được sự cố của tôi – user301441