2012-02-24 63 views
7

我嘗試使用谷歌地圖API V3,但我一直錯誤谷歌地圖API V3的DrawingManager沒有工作

我加在網頁腳本:

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

,我已經執行:

var drawingManager = new google.maps.drawing.DrawingManager({ 
     drawingMode: google.maps.drawing.OverlayType.MARKER, 
     drawingControl: true, 
     drawingControlOptions: { 
     position: google.maps.ControlPosition.TOP_CENTER, 
     drawingModes: [google.maps.drawing.OverlayType.MARKER, google.maps.drawing.OverlayType.CIRCLE] 
     }, 
     /*markerOptions: { 
     icon: new google.maps.MarkerImage('http://www.example.com/icon.png') 
     },*/ 
     circleOptions: { 
     fillColor: '#ffff00', 
     fillOpacity: 1, 
     strokeWeight: 5, 
     clickable: false, 
     zIndex: 1, 
     editable: true 
     } 

我總是相同的錯誤:

Uncaught TypeError: Cannot read property 'DrawingManager' of undefined

回答

0

除了你的代碼示例沒有完成之外(我猜你剛剛複製它時錯過了右括號),我沒有看到任何明顯的東西。我沒有使用繪圖庫,但似乎你正在按照正確的文檔。我會說使用Firebug來檢查從Google加載的Javascript是否提及了DrawingManager類。

9

我得到了同樣的錯誤,我想通了。使用「HTTPS」而不是「HTTP」 ......

< script type="text/javascript" 
src="https://maps.googleapis.com/maps/api/js?sensor=false&libraries=drawing"> 
</script> 
+0

這將是巨大的,如果你能提供一個解釋爲好。 – asheeshr 2012-12-27 10:29:20

0

嘗試在末尾添加

}); 

:當您加載地圖Javascript API,但必須使用libraries引導程序參數進行明確指定該庫默認不加載。

希望它有幫助。

1

看來你的代碼正在加載庫之前執行。如果異步加載,則應該在相同的API調用中包含該庫,該庫指定對您的映射初始化函數(可能包含/調用您的代碼片段)的回調。如果你的初始化函數被調用initMap然後做到這一點:

<script type="text/javascript" src="https://maps.googleapis.com/maps/api/jskey=YOUR_API_KEY?libraries=drawing&callback=initMap"></script>

我具有2個腳本標記得到了同樣的錯誤;一個加載繪圖庫(像你的,沒有回調),另一個只有回調。我修好了之後谷歌好心寫了下面在我的控制檯

You have included the Google Maps API multiple times on this page. This may cause unexpected errors.