Если вы не хотите обновлять всю карту, вы можете разделить вашу функцию инициализации на две функции. Например, у вас может быть одна функция initializeMap (), которая выполняет часть, отображающую карту на странице, что-то вроде этого:
var map
function initializeMap() {
var myLatlng = new google.maps.LatLng(37.386339,-122.085823);
var myOptions = {
zoom: 13,
center: myLatlng,
mapTypeId: google.maps.MapTypeId.ROADMAP,
};
map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);
}
Другая функция может называться refreshMarkers () и выполнять все, что связано с маркерами. С объявлением map
вне функции initializeMap () он доступен из функции refreshMarkers ().
Функция initializeMap () должна вызываться только один раз, а функция refreshMarker () должна отправляться в setTimeout (), как вы это сделали с initialize в своем примере. Таким образом, при каждом тайм-ауте будут выполняться только функции refreshMarker ().
К сожалению, у меня не было возможности проверить это, поэтому я не уверен, нужно ли вам также удалять старые маркеры в функции refreshMarker.
Дайте мне знать, если это поможет