Google Maps API v3: добавить полилинии внутри цикла? - PullRequest
0 голосов
/ 15 ноября 2010

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

Спасибо!

1 Ответ

0 голосов
/ 24 ноября 2010

В случае, если это может кому-то помочь, посмотрите это другое обсуждение: http://code.google.com/apis/maps/documentation/javascript/forum.html?place=topic%2Fgoogle-maps-js-api-v3%2FLp9tYYwkph4%2Fdiscussion

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...