从gmap中添加/删除标记

adding/deleting marker from gmaps

本文关键字:删除 添加 gmap      更新时间:2023-09-26

我需要根据复选框的状态添加/删除标记这是我的添加/删除函数(不能正常工作):

function getPointOnMap(mapObj) { 
    var position = new google.maps.LatLng(mapObj.lattitude, mapObj.longtitude);
    if(markers.length!=0){
        for(var i=0; i<markers.length; i++){
            if(markers[i].getPosition().toString() == position.toString()){
                marker.setMap(null);
                markers.slice(i);
            } else {
                var marker = new google.maps.Marker({ 
                    position: new google.maps.LatLng(mapObj.lattitude, mapObj.longtitude), 
                    map: map });
                markers.push(marker);
            }
        }   
    } else {
        var marker = new google.maps.Marker({ 
            position: new google.maps.LatLng(mapObj.lattitude, mapObj.longtitude), 
            map: map });
        markers.push(marker);
    }
}

下面是获取复选框和标记数据的代码:

$.ajax({
            type : "POST",
            url : "/getElements.json",
            success : function(result) {
            var html = '';
                for ( var i = 0; i < result.length; i++) {
                    (function(n) {
                        var obj = result[i];
                        if (obj.field == 0) {
                            element = $("<input>", {
                            type : "checkbox",
                            id   : obj.id
                        });
                        element.click(function() {
                            getPointOnMap(obj);
                        });
                        $("#orders").append(element,
                            obj.address + "<br />");
                        }
                    })(i)
                }
            }
});

我需要添加/删除标记从地图取决于复选框状态也许有人会指出我的逻辑错误

js函数中的cycle +拼写错误存在逻辑错误。下面是完整的工作函数,它监听复选框的动作:

function getPointOnMap(mapObj) { 
        var position = new google.maps.LatLng(mapObj.lattitude, mapObj.longtitude);
        console.log(markers);
       var count = 0;

        if(markers.length!=0){
            for(var i=0; i<markers.length; i++){
                if(markers[i].getPosition().toString() == position.toString()){
                    count ++;
                    console.log("1");
                    markers[i].setMap(null);
                    markers.splice(i);
                } 
            }
            if(count==0) {
                var marker = new google.maps.Marker({ 
                    position: new google.maps.LatLng(mapObj.lattitude, mapObj.longtitude), 
                    map: map });
                markers.push(marker);
            }
        } else {
            console.log("3");
            var marker = new google.maps.Marker({ 
                position: new google.maps.LatLng(mapObj.lattitude, mapObj.longtitude), 
                map: map });
            markers.push(marker);
        }
        console.log(markers);
}