Я в процессе миграции нашего приложения 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);
Что происходит, так это то, что отображается только вторая полилиния (а не первая).
Чтобы это работало, мне нужно либо использовать другое имя переменной (points1, points2, points3, ...), которое я не могу использовать, потому что мой код обычно находится в цикле, либо повторно объявлять мою переменную каждый раз в цикле вместо него (var points = [] перед каждой полилинией и удалить строку points.length = 0).
Возможно, я что-то упускаю в JavaScript, но я обычно объявляю свою переменную вне цикла (до) и использую ее внутри цикла.
Что я делаю не так?
Может кто-нибудь помочь?
Вот простая карта, которую я сделал, чтобы продемонстрировать свою проблему:
http://www.canamgroup.ws/GM.nsf/Map?OpenPage
(Это не в цикле, но проблема та же. Отображается только последняя полилиния, если я не использую другое имя переменной для моего массива или если я не повторяю ее каждый раз)
Спасибо!