Маркеры удаляются, когда на определенные маркеры больше не отправляется значение - PullRequest
0 голосов
/ 23 октября 2018

Привет всем, пожалуйста, помогите мне, я пытаюсь выполнить поисковый фильтр для отслеживания моего транспортного средства, поток операций, сервлет запрашивает все данные, когда фильтр параметров не отправляется ajax.например, у меня есть 5 данных о результате запроса, поэтому на карте будет 5 маркеров, ajax запускается каждые две секунды, поэтому, когда я запрашиваю параметр, например, только для этого специального транспортного средства, будет показан результат запроса только один,Якобы только маркер на экране, но предыдущие маркеры не исчезают и не отстают от экрана.как я могу сбросить маркеры в 0?Может кто-нибудь, пожалуйста, помогите мне спасибо!вот мой код

<script type="text/javascript">
var values = [];
var map;
var markers = [];
function    initMap()
{
            var options = {
                center: {lat: -33.890542, lng: 151.274856},
                zoom: 4
            };
            map = new google.maps.Map(document.getElementById('map'), options);
            var count = 0; 
            setInterval(function() {
                getGps();
                for(var i = 0; i <= markers.length; i++){
                        markers[i].setPosition(new google.maps.LatLng(values[count][1],values[count][2]));
                        count++;
                    }
            }, 2000);
} 
function removeMarkers(){
for(var i=0; i<markers.length; i++){
    markers[i].setMap(null);
}
markers=[];
}
function getGps() {
            xmlhttp.onreadystatechange=function() {    
                if( xmlhttp.readyState==4 && xmlhttp.status==200 ) {
                    removeMarkers();
                    var res = xmlhttp.responseText; 
                    console.log(res);
                    var split1 = res.split("|");
                        if(split1[0] != "NOK"){
                            for(var i = 0; i < split1.length; i++){
                                var split2 = split1[i].split(",");
                                String(split2);
                                var holder1 = holder = [split2[0],split2[1],split2[2]];
                                values.push(holder1);;
                                var marker1 = marker = new google.maps.Marker({map: map, icon: 'images/mapvehicle.png', draggable: true});
                                markers.push(marker1);
                            }
                        }   

                }
            };
            xmlhttp.open("POST","GpsPost",true);
            xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");
            xmlhttp.send("txtTerminal="+document.getElementById('txtTerminal').value+"&txtMerchant="+document.getElementById('txtMerchant').value+"&txtAccount="+document.getElementById('txtAccount').value);  
}

1 Ответ

0 голосов
/ 23 октября 2018

добавьте эту функцию и вызовите ее после этой строки.
if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {

function removeMarkers(){
    for(i=0; i<markers.length; i++){
        markers[i].setMap(null);
    }
    markers=[]
    values=[]
}
...