создать полилинию gmap3 для каждой позиции - PullRequest
0 голосов
/ 30 марта 2012

Я собираю груз истории и добавляю маркер карты для каждой позиции, просто интересно, как я могу также нарисовать ломаную линию между каждым маркером?

jQuery.each(json, function(i, item) {
                var name = item.name;
                var userId = item.data.user;
                jQuery.each(item.data.data, function(i, nav) {
                    var ts = nav.timestamp;
                    var lat = nav.latitude;
                    var long = nav.longitude;

                    if (lat != null && long != null) {
                        addMarker(name, counts = counts + 1, ts, lat, long, userId);
                    }
                });
            })  

я создаю простую функцию для рисованияломаная линия

 function addPolyline() {
    jQuery("#gMap").gmap3({
        action: 'addPolyline',
        options:{
        strokeColor: "#FF0000",
        strokeOpacity: 1.0,
        strokeWeight: 2
        },
        path:[
        [37.772323, -122.214897],
        [21.291982, -157.821856],
        [-18.142599, 178.431],
        [-27.46758, 153.027892]
        ]
    }); 

}

но не могу понять, как я могу нарисовать ломаную линию из данных foreach?

1 Ответ

1 голос
/ 30 марта 2012

Предполагая, что в ваших данных json у вас уже есть массив точек, или вы можете построить одну из частей данных, измените вашу addPolyline() функцию, чтобы принять массив в качестве аргумента

    var polyArray=[
            [37.772323, -122.214897],
            [21.291982, -157.821856],
            [-18.142599, 178.431],
            [-27.46758, 153.027892]
            ];

    function addPolyline(polyArray) {
        jQuery("#gMap").gmap3({
            action: 'addPolyline',
            options:{
            strokeColor: "#FF0000",
            strokeOpacity: 1.0,
            strokeWeight: 2
            },
            path:polyArray
        }); 

    }

Не уверен, хотите ли вы вызывать это в каждом цикле ваших данных или сохранять данные из каждого цикла в массив и вызывать его только один раз в конце.

Если вызывать его только один раз после цикла:

    var polyArray=[];

    $.each(json, function(i,item){
        /* your other parsing code....plus add to polyArray*/                 
        polyArray.push( [ item.someValue, item.otherValue]);              

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