Как нарисовать полилинию со многими точками в Картах Google (и отобразить полилинию)?

Почему, когда я хочу нарисовать полилинию с помощью Google Maps V3.0 (JavaScript API), которая имеет много точек (более 7 точек), линия не появляется, несмотря на то, что при попытке нарисовать полилинию с несколькими точками это появляется ?

редактировать:

код

var polyOptions = {strokeColor: '#FF0000',strokeOpacity: 0.6,strokeWeight: 5}
var poly = new google.maps.Polyline(polyOptions);
var path = poly.getPath();
var bounds2 = new google.maps.LatLngBounds();

    for(var i=0;i<a.length;i++){
        var zz=a[i].split(",");
        bar lat=zz[0];
        var lng=zz[1];

        var point = new google.maps.LatLng(parseFloat(lng),parseFloat(lat));

        var icon = customIcons["dot"];
                createMarker(i,"test routing",point,icon,2);
            path.push(point);
            poly.setMap(map);
         }  

person Adham    schedule 17.10.2011    source источник
comment
Вы должны поменять местами parseFloat(lng) и parseFloat(lat) в своем коде.   -  person John Black    schedule 17.10.2011
comment
нет нет ,, это нормально :) просто неправильные имена !   -  person Adham    schedule 17.10.2011
comment
Я попробовал ваш код с массивом из 1000 точек, и он работал нормально. Возможно ли, что вы видите какую-то проблему с потреблением памяти? Я наблюдал периодическую проблему с API Google Maps V3, когда (очевидно) маркеры или полилинии не отображались, если сборщик мусора запускается во время загрузки карты. К сожалению, у меня нет кода, достоверно воспроизводящего проблему.   -  person John Black    schedule 18.10.2011


Ответы (1)


Можете поделиться кодом, который не работает?

Иногда помогает установить карту полилинии даже после того, как вы добавите ее в параметры полилинии. Попробуйте что-то вроде:

var mypolyline = new google.maps.Polyline({
                  map: map,
                  path: coords,
                  strokeColor: "#787878",
                  strokeOpacity: .6,
                  strokeWeight: 3,
                  clickable: false
                });

mypolyline.setMap(map);
person DemitryT    schedule 17.10.2011
comment
Вы можете добавить точку с запятой в конце первой строки. Затем сделайте путь переменной пустым массивом вместо получения poly.getPath(). Итак, сделайте path = []; Затем оставьте все как есть и продолжайте добавлять точки в этот массив с помощью path.push(point). Далее, прямо перед выполнением poly.setMap(map), выполните poly.setPath(path). Это должно работать. Кроме того, когда вы создаете новую координату LatLng, вы намеренно ставите долготу перед широтой? - person DemitryT; 17.10.2011