Google Maps API v3:在循环中添加折线?

时间:2010-11-15 15:36:45

标签: javascript google-maps

我正在将Map应用程序从V2迁移到V3(3.2)。 我有一个循环读取LatLng并将它们放在一个数组中,在地图上显示为折线。 然后我将数组的长度设置为0,然后在循环中再次使用其他LatLng填充它以显示另一个折线...依此类推(很多次)。

它在V2中工作正常,但在V3中没有。 由于我的代码很复杂,我尝试编写最简单的代码来演示我的问题:

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);  

只会显示第二条Polyline(而不是第一条)。 为了使它工作,我必须使用一个我不能使用的不同的变量名称(points1,points2,points3,...),因为我的代码通常在循环中或每次在循环中重新声明我的变量而不是在它之前(var points = []在每条Polyline之前并删除points.length = 0行)。

也许我错过了一些关于JavaScript的东西,但我通常在循环之外(之前)声明我的变量一次并在循环中使用它。

我做错了什么? 有人可以帮忙吗?

这是我用来演示我的问题的简单地图:
http://www.canamgroup.ws/GM.nsf/Map?OpenPage
(它不在一个循环中,但问题是相同的。如果我没有为我的数组使用不同的变量名,或者每次都不重新声明它,则只显示最后一条Polyline)

谢谢!

1 个答案:

答案 0 :(得分:0)