0

緯度/経度データのフィードをマップデータ配列にプッシュしたいマップがあります。データを取得する機能がありますが、マップデータ配列で使用できるようにするのに問題があります。

アイデアは、新しい座標が配列に追加されたときに新しいマーカーをドロップインさせることです。何か案は?前もって感謝します!

   var ID='0';
        var DATA=[];
        function getData(){
            var url = 'http://us7.fieldagent.net/api/newResponses/';
            //url = 'http://us7.fieldagent.net/api/newResponses/;
            $.post(url,{'id':ID},function(data){
                if(data.status_id == 0){
                    ID = data.id;
                    console.log('Last Id: '+data.id);
                    var new_data = data.responses;

                    var count = 0
                    $.each(new_data,function(i,v){
                        count += 1;
                        var coord = 'new google.maps.LatLng('+v.lat+','+v.lon+'),';
                        DATA.push(coord);
                    })
                    console.log('Added '+count+' responses..')
                }
            });
        }
    $(document).ready(function(){
                getData();
                setInterval(getData,20*1000);
            });

        function drop() {
                for (var i = 0; i < DATA.length; i++) { 
                        setTimeout(function() {
                            addMarker();
                        }, i * 500);
                    }
                } 

        function addMarker(){
            markers.push(new google.maps.Marker({
                position: DATA[iterator],
                map: map,
                draggable: false,
                icon: 'fatie.svg',
                animation: google.maps.Animation.DROP
            }));
            iterator++;
        }
4

2 に答える 2

1

実際にアイテムをマップに追加する必要があります。現在、DATA配列にアイテムを追加しているだけです。addMarker新しいデータでも呼び出す必要があります。

これらのマーカーを一定の間隔でマップに追加して、時間の経過とともにマップにドロップすると同時に、サーバーから新しいマーカーを照会できるようにする必要があるようです。

次のようなコードを試してください。

var ID='0';
var DATA=[];
function getData(){
    var url = 'http://us7.fieldagent.net/api/newResponses/';
    $.post(url,{'id':ID},function(data){
        if(data.status_id == 0){
            ID = data.id;
            console.log('Last Id: '+data.id);
            var new_data = data.responses;

            var count = 0
            $.each(new_data,function(i,v){
                count += 1;
                var coord = 'new google.maps.LatLng('+v.lat+','+v.lon+'),';
                DATA.push(coord);
            });
            console.log('Added '+count+' responses..');
            if (count > 0) addMarker(); //call addMarker if there are new markers
        }
    });
}
$(document).ready(function(){
    getData();
    setInterval(getData,20*1000);
});

function addMarker(){
    if (DATA.length == 0) return; //exit if DATA is empty
    markers.push(new google.maps.Marker({
        position: DATA.shift(), //take the first item in DATA
        map: map,
        draggable: false,
        icon: 'fatie.svg',
        animation: google.maps.Animation.DROP
    }));
    if (DATA.length > 0) setTimeout(addMarker, 500); //call again if needed
}
于 2013-03-25T22:24:19.550 に答える
0

2つのことを行うメソッドを作成します。

  1. アレイに追加
  2. アイテムをマップに追加します
于 2013-03-25T21:16:37.653 に答える