Я в процессе миграции нашего приложения Карты от 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
(Это не в цикле, но проблема такая же, только последний полилинии отображается, если я не использовать другое имя переменной. для моего массива или если я не повторно декларирую его каждый раз)
Спасибо!