У меня есть функция для получения координат из базы данных и функции для установки маркера (setMarker()
). Я проверяю базу данных с помощью setInterval(setMarker())
и обновляю маркер, вызывая setMarker()
, если местоположение изменилось.Создан прозрачный оверлей, кроме маркера первого времени.
Я проверяю, если это первый раз, когда я создаю маркер и не обновляю его, если нет, то я markerArray[i].setMap(null)
. Во второй раз, когда я вхожу в цикл, я пытаюсь установить значение null. Но я получаю сообщение об ошибке markerArray
не определено.
Проверка выполняется внутри цикла foreach
, который должен зацикливаться на длину (количество координат местоположения), а затем я установил значение null.
function setMarker(){
var markerArray = [];
latArray.forEach(function(lat, i) {
// marker = new google.maps.Marker();
var infoWindow = new google.maps.InfoWindow({
content: '<div id="content>' + '<p style="color:#000000">DeviceID:<p>' + '<p>' + deviceId[i] + '</p>' + '</div>'
});
if(markerCount >(latArray.length)) //check if marker is created for first time,if not, set to null
{
//console.log("!------------------");
//console.log(marker);
}
else{ //if first time, increment so that next time marker can be set to null to create new marker in new position
markerCount++;
console.log("else"+markerCount);
}
var marker = new google.maps.Marker({
map: map,
mapTypeId: google.maps.MapTypeId.ROADMAP,
//position: new google.maps.LatLng(latArray[i], lngArray[i]),
icon: "phone6.png"
});
markerArray.push(marker);
//console.log(markerArray[i]);
markerArray[i].setPosition(new google.maps.LatLng(latArray[i],lngArray[i])); //marker undefined here
markerArray[i].addListener("click", function() {
infoWindow.open(map, marker);
//marker.setMap(null);
});
});
}