Javascript 无法删除特定标记。错误:未捕获类型错误:无法读取属性';setMap';未定义的

Javascript 无法删除特定标记。错误:未捕获类型错误:无法读取属性';setMap';未定义的,javascript,google-maps-api-3,Javascript,Google Maps Api 3,我想从GoogleMap中删除homeMarker,但是当我尝试执行delete函数时,它给了我以下错误:UncaughtTypeError:无法读取undefined的属性“setMap”。我尝试了不同的方法来修复它,但它总是给我这个错误。下面是生成映射输出的JavaScript var markers = []; function initMap() { var iconBase = 'https://maps.google.com/mapfiles/kml/shapes/';

我想从GoogleMap中删除homeMarker,但是当我尝试执行delete函数时,它给了我以下错误:UncaughtTypeError:无法读取undefined的属性“setMap”。我尝试了不同的方法来修复它,但它总是给我这个错误。下面是生成映射输出的JavaScript

var markers = [];

function initMap() {
    var iconBase = 'https://maps.google.com/mapfiles/kml/shapes/';

    var c = function(pos) {
        var lat = pos.coords.latitude,
            long = pos.coords.longitude,
            coords = lat + " , " + long;

        var p1 = {
            lat: parseFloat('<%= myLatitude %>'),
            lng: parseFloat('<%= myLongitude %>')
        }

        var p2 = {
            lat: lat,
            lng: long
        }
        var rad = function(x) {
            return x * Math.PI / 180;
        };

        var getDistance = function(p1, p2) {
            var R = 6378137; // Earth’s mean radius in meter
            var dLat = rad(p2.lat - p1.lat);
            var dLong = rad(p2.lng - p1.lng);
            var a = Math.sin(dLat / 2) * Math.sin(dLat / 2) +
                Math.cos(rad(p1.lat)) * Math.cos(rad(p2.lat)) *
                Math.sin(dLong / 2) * Math.sin(dLong / 2);
            var c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));
            var d = (parseFloat(R * c));

            console.log(d);
            return d; // returns the distance in meter
        };

        //Home marker
        var homeMarker = addMarker({
            coords: {
                lat: lat,
                lng: long
            },
            content: '<h3>Current Location</h3>'
        });

        //Delivery van marker
        var vanMarker = addMarker({
            coords: {
                lat: parseFloat('<%= myLatitude %>'),
                lng: parseFloat('<%= myLongitude %>')
            },
            iconImage: 'https://developers.google.com/maps/documentation/javascript/examples/full/images/beachflag.png',
            content: '<h3>Delivery Van Location</h3><br><p>Delivery Van is ' + Math.round(getDistance(p1, p2)) + 'm Away from you.'
        });

        //Codes to move markers
        function movingMarkers() {
            homeMarker.setMap(null);
        }

        setInterval(function() {
            movingMarkers();
        }, 5000);

        //Add marker function
        function addMarker(props) {
            var marker = new google.maps.Marker({
                position: props.coords,
                map: map,
                icon: props.iconImage
            });
            markers.push(marker);

            marker.addListener('click', function() {
                map.setZoom(14);
                map.setCenter(marker.getPosition());
            });

            marker.addListener('click', toggleBounce);

            function toggleBounce() {
                if (marker.getAnimation() !== null) {
                    marker.setAnimation(null);
                } else {
                    marker.setAnimation(google.maps.Animation.BOUNCE);
                }
            }

            map.addListener('click', function() {
                map.setZoom(11);
            })

            //Check for customicon
            if (props.iconImage) {
                marker.setIcon(props.iconImage);
            }

            //Check content
            if (props.content) {
                var infoWindow = new google.maps.InfoWindow({
                    content: props.content
                });

                marker.addListener('click', function() {
                    infoWindow.open(map, marker);
                })
            }
        }
    }

    var e = function(error) {
        if (error.code === 1) {
            alert('Unable to get location!');
        }
    }

    navigator.geolocation.getCurrentPosition(c, e);

    //Map options
    var options = {
        zoom: 11,
        center: {
            lat: 1.3521,
            lng: 103.8198
        }
    }

    var map = new google.maps.Map(document.getElementById('map'), options);

}
var标记=[];
函数initMap(){
iconBase变量https://maps.google.com/mapfiles/kml/shapes/';
var c=功能(pos){
var lat=位置坐标纬度,
长=位置坐标经度,
coords=lat+“,”+long;
变量p1={
lat:parseFloat(“”),
液化天然气:浮球(“”)
}
变量p2={
拉特:拉特,
液化天然气:长
}
var rad=函数(x){
返回x*Math.PI/180;
};
var getDistance=函数(p1、p2){
var R=6378137;//以米为单位的地球平均半径
var dLat=rad(p2.lat-p1.lat);
var dLong=rad(p2.lng-p1.lng);
变量a=Math.sin(dLat/2)*Math.sin(dLat/2)+
数学cos(rad(p1.lat))*数学cos(rad(p2.lat))*
数学单(长/2)*数学单(长/2);
var c=2*Math.atan2(Math.sqrt(a),Math.sqrt(1-a));
var d=(parseFloat(R*c));
控制台日志(d);
return d;//返回以米为单位的距离
};
//本垒打
var homeMarker=addMarker({
协调:{
拉特:拉特,
液化天然气:长
},
内容:“当前位置”
});
//送货车标记器
var vanMarker=addMarker({
协调:{
lat:parseFloat(“”),
液化天然气:浮球(“”)
},
iconImage:'https://developers.google.com/maps/documentation/javascript/examples/full/images/beachflag.png',
内容:“送货车位置”
送货车是“+Math.round(getDistance(p1,p2))+“我离你很远。” }); //移动标记的代码 函数movingMarkers(){ homeMarker.setMap(空); } setInterval(函数(){ 移动标记(); }, 5000); //添加标记函数 功能添加标记(道具){ var marker=new google.maps.marker({ 位置:道具,坐标, 地图:地图, 图标:props.iconImage }); 标记器。推(标记器); marker.addListener('click',function()){ map.setZoom(14); map.setCenter(marker.getPosition()); }); marker.addListener('click',toggleBounce); 函数toggleBounce(){ if(marker.getAnimation()!==null){ marker.setAnimation(null); }否则{ setAnimation(google.maps.Animation.BOUNCE); } } map.addListener('单击',函数()){ map.setZoom(11); }) //检查自定义图标 如果(道具图像){ marker.setIcon(props.iconImage); } //检查内容 如果(道具内容){ var infoWindow=new google.maps.infoWindow({ 内容:道具内容 }); marker.addListener('click',function()){ 信息窗口。打开(地图、标记); }) } } } var e=函数(错误){ 如果(错误代码===1){ 警报('无法获取位置!'); } } navigator.geolocation.getCurrentPosition(c,e); //地图选项 变量选项={ 缩放:11, 中心:{ 纬度:1.3521, 液化天然气:103.8198 } } var map=new google.maps.map(document.getElementById('map'),options); }
错误在这里:

var homeMarker = addMarker({
        coords: {
            lat: lat,
            lng: long
        },
        content: '<h3>Current Location</h3>'
    });

代码片段:

var标记=[];
var标记;
函数initMap(){
iconBase变量https://maps.google.com/mapfiles/kml/shapes/';
var c=功能(pos){
pos={
协调:{
纬度:40.6975898,
经度:-74.2631635
}
};
var lat=位置坐标纬度,
长=位置坐标经度,
coords=lat+“,”+long;
变量p1={
拉脱维亚:40.735657,
液化天然气:-74.1723667
}
变量p2={
拉特:拉特,
液化天然气:长
}
var rad=函数(x){
返回x*Math.PI/180;
};
var getDistance=函数(p1、p2){
var R=6378137;//以米为单位的地球平均半径
var dLat=rad(p2.lat-p1.lat);
var dLong=rad(p2.lng-p1.lng);
变量a=Math.sin(dLat/2)*Math.sin(dLat/2)+
数学cos(rad(p1.lat))*数学cos(rad(p2.lat))*
数学单(长/2)*数学单(长/2);
var c=2*Math.atan2(Math.sqrt(a),Math.sqrt(1-a));
var d=(parseFloat(R*c));
控制台日志(d);
return d;//返回以米为单位的距离
};
//本垒打
homeMarker=addMarker({
协调:{
拉特:拉特,
液化天然气:长
},
内容:“当前位置”
});
//送货车标记器
var vanMarker=addMarker({
协调:{
拉脱维亚:40.735657,
液化天然气:-74.1723667
},
iconImage:'https://developers.google.com/maps/documentation/javascript/examples/full/images/beachflag.png',
内容:“送货车位置”
送货车是“+Math.round(getDistance(p1,p2))+“我离你很远。” }); //移动标记的代码 函数movingMarkers(){ homeMarker.setMap(空); } setInterval(函数(){ 移动标记(); }, 5000); //添加标记函数 功能添加标记(道具){ var marker=new google.maps.marker({
//Add marker function
function addMarker(props) {
  var marker = new google.maps.Marker({
    position: props.coords,
    map: map,
    icon: props.iconImage
  });
  markers.push(marker);

  marker.addListener('click', function() {
    map.setZoom(14);
    map.setCenter(marker.getPosition());
  });

  marker.addListener('click', toggleBounce);

  function toggleBounce() {
    if (marker.getAnimation() !== null) {
      marker.setAnimation(null);
    } else {
      marker.setAnimation(google.maps.Animation.BOUNCE);
    }
  }

  map.addListener('click', function() {
    map.setZoom(11);
  })

  //Check for customicon
  if (props.iconImage) {
    marker.setIcon(props.iconImage);
  }

  //Check content
  if (props.content) {
    var infoWindow = new google.maps.InfoWindow({
      content: props.content
    });

    marker.addListener('click', function() {
      infoWindow.open(map, marker);
    })
  }
  // return the marker
  return marker;  // <============================= add this line
}