从gmaps添加/删除标记

时间:2013-06-09 09:09:47

标签: javascript jquery google-maps google-maps-api-3

我需要根据checkox的状态添加/删除标记 这是我的添加/删除功能(无法正常工作):

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)
                }
            }
});

我需要根据复选框状态从地图添加/删除标记 所以也许有人会指出我有逻辑错误的地方

1 个答案:

答案 0 :(得分:0)

js函数中的循环+拼写错误存在逻辑错误。 这里是完全workig函数,它可以监听复选框的操作:

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);
}