【发布时间】:2017-09-12 02:21:17
【问题描述】:
下面的代码会加载谷歌地图并每隔一秒左右刷新一次标记的位置。问题是代码会一遍又一遍地写入标记的位置。有没有办法在编写新标记之前删除以前的标记?
问题在于,当它清除标记 clearOverlays(); 时,它不会更新新标记。
任何帮助或建议将不胜感激。
这个问题与之前的问题不同,因为问题是在调用 clearOverlays(); 时出现的。从函数 refreshDiv() 它不会更新。
<!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>
【问题讨论】:
标签: javascript html google-maps