2012-12-26 27 views
0

通過調用我的函數drawGmapLine()我的瀏覽器說「line.setMap不是函數」。 我的地圖創建沒有任何問題。你能看到問題嗎?js函數在gmap上折線

function drawGmapLine(id) { 
    var map = $("#map"); 

    var pfad = [ 
      new google.maps.LatLng(37.772323, -122.214897), 
      new google.maps.LatLng(21.291982, -157.821856), 
      new google.maps.LatLng(-18.142599, 178.431), 
      new google.maps.LatLng(-27.46758, 153.027892) 
     ]; 

     var line = new google.maps.Polyline({ 
      path: pfad, 
      strokeColor: '#FF0000', 
      strokeOpacity: 1.0, 
      strokeWeight: 2 
     }); 

     line.setMap(map); 
} 
+0

你在'var map = $ gmap;新......「完全是束縛的;這可能是你的問題。 – Mathletics

+0

但沒有這條線我有同樣的問題。在這種情況下,我設置了line.setMap($ gmap); – Thomas1703

+0

您確定您正確地複製了代碼嗎? – Mathletics

回答

1

您使用的插件(jQuery GMap)使用Maps V2。上面的代碼是使用Maps V3編寫的。您需要找到更新的插件,或者直接使用Maps V3 API才能使new google.maps.Polyline()通話起作用。

+0

你是對的。有一個複製錯誤。但代碼也沒有這樣工作...我糾正了我的帖子中的代碼。 – Thomas1703

0

這不是獲取對google.maps.Map對象的引用的正確方法。

var map = $("#map"); 

所以這是行不通的:

line.setMap(map); 

通常的解決辦法是參考保持從當你構造它的地圖。

var map = new google.maps.Map(...); 
+0

但是我已經有了一張我想放置多段線的地圖。你的代碼將創建一個新的地圖/參考。 – Thomas1703

+0

我正在提出一個建議,保留對現有地圖的引用,而不是創建一個新地圖。您沒有包含任何用於在問題中創建地圖的代碼,因此我無法引用該代碼。如果你想要一個完整的解決方案,發佈一個鏈接,一個jsfiddle或完整的代碼來重現這個問題。 – geocodezip