以下代碼會加載谷歌地圖並每隔大約刷新一次標記的位置。問題是代碼一直在反覆寫入標記的位置。在寫一個新標記之前,有沒有辦法去除之前的標記?刪除Google標記
問題是,當它清除標記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>
謝謝。看到谷歌,但問題是代碼清除標記,但不會再更新它們。 我已添加clearOverlays();但這似乎不允許之後的更新。有什麼想法嗎? – user7763438
有一個類似的問題,你可以嘗試該解決方案。我認爲它應該工作。 http://stackoverflow.com/questions/8229827/update-markercluster-after-removing-markers-from-array –
我在谷歌地圖api上工作了很久。我會試着在我的舊代碼文件中找出我是如何做到的。 –