2013-06-20 78 views
8

中沒有或不再可用的對象」我有一個XML,它通過XSLT轉換爲HTML。 XML能夠包含JavaScript,並將其正確地轉換爲HTML,就像我在其他許多頁面中一樣。它不適用於GoogleMaps,我懷疑我的JavaScript有問題。InvalidStateError:「嘗試使用基本Google Map教程示例

生成的HTML的相關部分如下所示。

發生了什麼事在HTML /的腳本:

  • 的API從googleapis.com
  • 創建帶有ID map_canvas提供一個DIV加載。
  • 函數start()被定義,它通過<body onload="start();">開始。
  • 在此函數中,創建變量map_canvas並將 引用傳遞給名爲map_canvas的div對象。
  • 要控制,那這一步工作,我給新的背景色 紅色。
  • 它的工作原理。
  • 接下來,我想創建變量var_options併爲center,zoom和mapTypeId設置初始值 值。
  • 要控制,那這一步工作,我給新的背景 顏色藍色。
  • 這不起作用,它保持紅色。
  • 因此,該指令未執行。
  • 因此,我檢查我是否可以訪問對象google.maps
  • 如果是這樣,我給新的背景顏色綠色div。
  • 這有效,所以我可以訪問此對象。
  • 交叉檢查:如果我註釋掉加載API的語句, 顏色不會改變。

對我來說,這看起來像以下是某處的錯誤。

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

但幾個小時後,我仍然無法弄清楚它是什麼。

<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

你在控制檯遇到什麼錯誤? – Bergi

+1

該代碼給了我一個錯誤,即傳感器必須是真或假。我測試了一下,並將googleapis url更改爲'

11

我發現這個錯誤的最常見的原因是根本無效的IMG SRC。

+0

這是我的情況。 +1。 –

3

我的錯誤是類似的東西(這就是爲什麼我發現這個職位),但只在Internet Explorer(版本11):

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

,這是因爲我使用SVG圖像作爲標記引起的:

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

切換到png圖像而不是svg解決了我的問題!

+1

嘗試將高度和寬度添加到SVG。 查看更多信息:http://stackoverflow.com/questions/23923607/custom-markers-in-google-maps-not-showing-up-in-firefox#answer-24280941 – Promo

+0

謝謝@Promo,那正是什麼我需要。如果你問我,你的評論可能是一個單獨的答案。 – marcvangend

+0

@Promo感謝您的鏈接,它解決了我的問題 – user301441