如何从GoogleMapsAPI-JavaScript中使用marker.setMap(null)删除标记

如何从GoogleMapsAPI-JavaScript中使用marker.setMap(null)删除标记,javascript,google-maps-api-3,google-maps-markers,Javascript,Google Maps Api 3,Google Maps Markers,其想法是使用谷歌地图API制作动态标记。 我想先删除创建的标记,然后再显示新标记。我不想为了管理标记而去做任何事情。因为我只想删除它们,而不把它们放到数组中,然后从数组中删除它们 我正在循环中调用deleteMarker函数来完成此操作 我使用了一个全局变量,但是 我得到这个错误: TypeError: Mark is undefined[Learn More] 代码: var map; var Mark; //setInterval(function(){ alert("Hello");

其想法是使用谷歌地图API制作动态标记。 我想先删除创建的标记,然后再显示新标记。我不想为了管理标记而去做任何事情。因为我只想删除它们,而不把它们放到数组中,然后从数组中删除它们

我正在循环中调用
deleteMarker
函数来完成此操作

我使用了一个全局变量,但是 我得到这个错误:

TypeError: Mark is undefined[Learn More]
代码:

var map;
var Mark;

//setInterval(function(){ alert("Hello"); }, 3000);
setInterval(ajaxCall, 9000); //300000 MS == 5 minutes

function ajaxCall() {
  $.ajax({
      url: '/maps/my_ajax_request/',
      datatype: 'json',
      type: 'GET',
      success: function (data) {
        for(var prop in data) {
            var item = data[prop];
            console.log(item.latitude,item.longitude, item.icon);

            if (item.icon === "online") {
              selected_status = online;
            } else {
                selected_status = offline;
            } 

            deleteMarker();
            this.Mark = new google.maps.Marker({
              position: {lat: (parseFloat(item.latitude)), lng: (parseFloat(item.longitude))},
              map: map,
              icon: selected_status
            });       
        }
      },

      failure: function(data1) { 
        alert("Got an error dude");
      }
  });
}

function deleteMarker() {
    Mark.setMap(null);
    Mark=null;
}

在访问其属性之前,请检查标记是否存在。另外,当您创建
标记
时,请删除
,使用变量名称引用变量。我建议添加显示错误的行和列,以帮助您快速获得答案。版主注意-请在评论部分。感谢它修复了错误!但是我仍然不能删除旧的标记。我没有错。我想马克是空的!!!??你能分享一些你正在接受的产出和你想要实现的产出吗<代码>所选状态=在线->此处在线是一个变量或字符串?var online='img.icons8.com/uvolet/48/000000/marker.png';var offline='img.icons8.com/color/48/000000/marker.png';我的_ajax_请求的输出是类似于以下内容的json(42544654在线)
var map;
var Mark;

var online = 'https://img.icons8.com/ultraviolet/48/000000/marker.png';
var offline = 'https://img.icons8.com/color/48/000000/marker.png';

setInterval(ajaxCall, 9000); // 300000ms == 5 minutes

function ajaxCall() {
  $.ajax({
    url: '/maps/my_ajax_request/',
    datatype: 'json',
    type: 'GET',
    success: function (data) {
      for(var prop in data) {
        var item = data[prop];
        console.log(item.latitude,item.longitude, item.icon);

        if (item.icon === "online") {
          selected_status = online;
        } else {
          selected_status = offline;
        }

        deleteMarker();

        Mark = new google.maps.Marker({ // no need of use `this` keyword when use as variable
          position: {lat: (parseFloat(item.latitude)), lng: (parseFloat(item.longitude))},
          map: map,
          icon: selected_status
        });
      }
    },

    failure: function(data1) {
      alert("Got an error dude");
    }
  });
}

function deleteMarker() {
  if (Mark) {
    Mark.setMap(null);
    Mark = null;
  }
}