The below code loads a google map and refreshes the markers' locations every second or so. The problem is the code keeps writing the markers' location over and over. Is there a way to remove the previous marker before writing a new one?
The problem is that when it clears the markers clearOverlays(); it does not update new ones.
Any help or advice would be much appreciated.
This question is different from previous questions as the problem is when calling clearOverlays(); from function refreshDiv() it will not update.
<!DOCTYPE html>
<html>
<head>
<style>
#map {
height: 100%;
}
html, body {
height: 100%;
margin: 0;
padding: 0;
}
</style>
</head>
<body onload='refreshDiv()'>
<div id='map'></div>");
<script>
function refreshDiv()
{
clearOverlays();
var refresher = setTimeout('refreshDiv()', 1000);
updateMarker(map);
}
function initMap()
{
window.map = new google.maps.Map(document.getElementById('map'), {
zoom: 10,
center: {lat: ".$latitude.", lng: ".$longitude."}
});
}
function clearOverlays()
{
for (var i = 0; i < marker.length; i++ )
{
marker[i].setMap(null);
}
marker.length = 0;
for (var i = 0; i < beach.length; i++ )
{
beach[i].setMap(null);
}
beach.length=0;
}
function updateMarker(map)
{
var beaches = [['"Jim"', 55.0102686,-1.5847956999999724],];
var image = {
url: '1.png',
// This marker is 20 pixels wide by 32 pixels high.
size: new google.maps.Size(20, 32),
// The origin for this image is (0, 0).
origin: new google.maps.Point(0, 0),
// The anchor for this image is the base of the flagpole at (0, 32).
anchor: new google.maps.Point(0, 32)
};
var shape = {
coords: [1, 1, 1, 20, 18, 20, 18, 1],
type: 'poly'
};
for (var i = 0; i < beaches.length; i++) {
window.beach = beaches[i];
window.marker = new google.maps.Marker({
position: {lat: beach[1], lng: beach[2]},
map: map,
icon: image,
shape: shape,
title: beach[0],
zIndex: beach[3]
});
}
}
</script>
<script async defer
src='https://maps.googleapis.com/maps/api/js?key=AIzaSyBVQaENEYHY2g-mRhD6_tj1cSK8DhQoqHI&callback=initMap'>
</script>
</body>
</html>