2010-11-15 55 views
0

我正在將我們的Map應用程序從V2遷移到V3(3.2)。 我有一個讀取LatLng的循環,並將它們放入一個數組中以在地圖上顯示爲Polyline。 然後我將數組的長度設置爲0,然後在其他LatLng的循環中再次填充以顯示另一個Polyline ...等等(很多次)。Google Maps API v3:在循環中添加多段線?

它在V2中工作正常,但不在V3中。 因爲我的代碼是複雜的,我試着寫了simpliest代碼可以證明我的問題:

function setPolyline(points) { 
    var polyline = new google.maps.Polyline({ 
     path: points, 
     strokeColor: '#FF0000', 
     strokeOpacity: 0.5, 
     strokeWeight: 2 
    }); 
    polyline.setMap(map); 
} 

var mapDiv = document.getElementById('map'); 
var mapCenter = new google.maps.LatLng(0,0); 
var mapOptions = { 
    zoom: 2, 
    center: mapCenter, 
    backgroundColor: '#E1E1E1', 
    mapTypeId: google.maps.MapTypeId.ROADMAP 
} 
map = new google.maps.Map(mapDiv, mapOptions); 

var points=[]; 
points[0]=new google.maps.LatLng(-35, 71); 
points[1]=new google.maps.LatLng(-36, 75); 
points[2]=new google.maps.LatLng(-37, 91); 
setPolyline(points); 

points.length=0; 
points[0]=new google.maps.LatLng(-31, 71); 
points[1]=new google.maps.LatLng(-32, 75); 
setPolyline(points); 

什麼情況是,只有第二折線顯示(而不是第一個)。 爲了使它起作用,我必須使用不能使用的不同變量名稱(points1,points2,points3,...),因爲我的代碼通常在一個循環中,或者每次重新聲明我的變量循環而不是之前(每個Polyline之前的var points = [],並刪除points.length = 0行)。

也許我錯過了JavaScript的一些東西,但我通常在循環之前(之前)聲明一次我的變量並在循環中使用它。

我在做什麼錯? 有人可以幫忙嗎?

這裏有一個簡單的地圖我做證明我的問題:
http://www.canamgroup.ws/GM.nsf/Map?OpenPage
(這不是在一個循環,但問題是相同的,如果我不使用不同的變量名只有最後一個折線顯示。對於我的陣列或者如果我沒有每次重新聲明它)

謝謝!

回答

相關問題