2010-11-15 2 views
0

Я в процессе миграции нашего приложения Карты от V2 до V3 (3.2). У меня был цикл, который читал LatLng и помещал их в массив для отображения в виде полилинии на карте. Затем я устанавливаю длину моего массива равным 0, а затем снова заполняю его в цикле другим LatLng, чтобы отобразить другую полилинию ... и так далее (много раз).API Карт Google v3: добавить полилинии внутри цикла?

Он отлично работал в 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); 

Что происходит, что только вторая полилиния показана (и не первый). Чтобы заставить его работать, мне нужно либо использовать другое имя переменной (points1, points2, points3, ...), которое я не могу использовать, потому что мой код обычно находится в цикле или повторно объявляет мою переменную каждый раз в цикл вместо нее (var points = [] перед каждой полилинией и удалить строку points.length = 0).

Возможно, мне что-то не хватает на JavaScript, но я обычно объявляю свою переменную за пределами цикла (раньше) один раз и использую ее внутри цикла.

Что я делаю неправильно? Может кто-нибудь помочь?

Вот простая карта, я сделал, чтобы продемонстрировать мою проблему:
http://www.canamgroup.ws/GM.nsf/Map?OpenPage
(Это не в цикле, но проблема такая же, только последний полилинии отображается, если я не использовать другое имя переменной. для моего массива или если я не повторно декларирую его каждый раз)

Спасибо!

ответ

Смежные вопросы