0
function addDoctorLocation(options) 
{
    var gm = Ext.getCmp('mygooglemap');
    var mpoint = new google.maps.LatLng(options.lat,options.lng);
    var marker = gm.addMarker(mpoint,options.marker,false,false, options.listeners);
    infoBubble = new InfoBubble({maxWidth: 300});
}

tree.on('checkchange', function(node){
    var data = node.data;

    if (data.checked == true){
        var options = {
            lat:3.951941,
            lng:102.052002,
            marker: {title:"Hello World!"},
            listeners: {
                click: function(e){

                }
            }     
        }     
        addDoctorLocation(options);           
    }

    Ext.MessageBox.show({
        title: 'Changed checkbox status',
        msg: 'MainID: ' + data.MainID + ' <br /> Checkbox status: ' + data.checked,
        icon: Ext.MessageBox.INFO
    });
})

質問

このコードは、チェックボックスがチェックされているときにマーカーを正常に追加しますが、チェックボックスがチェックされていないときにマーカーを削除するにはどうすればよいですか?
マーカーに ID を割り当てる必要がありますか? チェックを外すと、IDでマークを削除する必要がありますか? additional : マップには 1 つのマーカーだけでなく、複数のマーカーがあります

4

1 に答える 1

2

マーカーの構造をグローバル変数として作成します。マーカーを追加するときは、チェックボックスに基づいて一意のものをキーにして、それらを構造にも追加します。したがって、後でこれを使用して、非表示にするマーカーを特定できます。data.checked != true の場合はmarker.setMap(null);、それを取り除くために使用します。

何かのようなもの:

var markers = {};

function addDoctorLocation(options) 
{
    var gm = Ext.getCmp('mygooglemap');
    var mpoint = new google.maps.LatLng(options.lat,options.lng);
    var marker = gm.addMarker(mpoint,options.marker,false,false, options.listeners);
    infoBubble = new InfoBubble({maxWidth: 300});

    // assign it into the structure
    markers[options.MainID] = marker;
}

tree.on('checkchange', function(node){
    var data = node.data;

    if (data.checked == true){
        var options = {
            lat:3.951941,
            lng:102.052002,
            marker: {title:"Hello World!"},
            listeners: {
                click: function(e){

                }
            },
            MainID: data.MainID
        };     
        addDoctorLocation(options);           
    } else {
        markers[data.MainID].setMap(null);
    }

    Ext.MessageBox.show({
        title: 'Changed checkbox status',
        msg: 'MainID: ' + data.MainID + ' <br /> Checkbox status: ' + data.checked,
        icon: Ext.MessageBox.INFO
    });
});
于 2013-02-25T09:41:03.817 に答える