通过开关案件使谷歌地图元素似乎失败

时间:2012-03-02 17:20:25

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

我一直试图调试这个没有运气。我有一个掉落的开关盒似乎工作,因为我看着堆栈,它击中我设置的所有断点(假装该类型是多边形,我把所有应该出现的断点放在上面)。我点击了其中的每一个,但它失败了。所以......这是第一个有效的。

function create_map_element3(type,op,map){
    var _op={};
    defined(map)                ?_op.map=map:null;
    defined(op.clickable)       ?_op.clickable=op.clickable:null;
    defined(op.visible)         ?_op.visible=op.visible:null;
    defined(op.zIndex)          ?_op.zIndex=op.zIndex:null;

    switch(type){
        case "polygon" :
            defined(op.editable)        ?_op.editable=op.editable:null;
            defined(op.fillOpacity)     ?_op.fillOpacity=op.fillOpacity:null;
            return new google.maps.Polygon(_op);
            break;
        case "rectangle" :
            defined(op.editable)        ?_op.editable=op.editable:null;
            defined(op.fillOpacity)     ?_op.fillOpacity=op.fillOpacity:null;
            return new google.maps.Rectangle(_op);
            break;
        case "circle" :
            defined(op.editable)        ?_op.editable=op.editable:null;
            defined(op.fillOpacity)     ?_op.fillOpacity=op.fillOpacity:null;
            return new google.maps.Circle(_op);
            break;          
        case "polyline" :
            defined(op.editable)        ?_op.editable=op.editable:null;
            defined(op.strokeWeight)    ?_op.strokeWeight=op.strokeWeight:null;
            return new google.maps.Polyline(_op);
            break;              
        case "marker" :
            defined(op.animation)       ?_op.animation=op.animation:null;
            return new google.maps.Marker(_op);
            break;
    };
}

有效..我得到谷歌地图元素就好了。现在随着变化,再次调试时我点击了所有断点_op对象被填充并且填充了它的属性......但没有...

function create_map_element(type,op,map){
    var _op={};
    defined(map)                ?_op.map=map:null;
    switch(type){
        case "polygon": case "polyline" :  case "rectangle" : case "circle" : case "marker" :
                defined(op.clickable)       ?_op.clickable=op.clickable:null;
                defined(op.visible)         ?_op.visible=op.visible:null;
                defined(op.zIndex)          ?_op.zIndex=op.zIndex:null;
        case "polygon": case "polyline" :  case "rectangle" : case "circle" :
                defined(op.strokeColor)     ?_op.strokeColor=op.strokeColor:null;
                defined(op.strokeOpacity)   ?_op.strokeOpacity=op.strokeOpacity:null;
                defined(op.strokeWeight)    ?_op.strokeWeight=op.strokeWeight:null;
        case "polygon": case "rectangle" : case "circle" :
                defined(op.fillOpacity)     ?_op.fillOpacity=op.fillOpacity:null;
        case "polygon": case "polyline" :
                defined(op.geodesic)        ?_op.geodesic=op.geodesic:null;             
        case "marker" :
                defined(op.animation)       ?_op.animation=op.animation:null;
        case "polygon" :
                return new google.maps.Polygon(_op);
            break;
        case "rectangle" :
                return new google.maps.Rectangle(_op);
            break;
        case "circle" :
                return new google.maps.Circle(_op);
            break;          
        case "polyline" :
                return new google.maps.Polyline(_op);
            break;              
        case "marker" :
                return new google.maps.Marker(_op);
            break;  
    };
}

但是当我在后退线上设置断点时它会击中它并且所有看起来都正确..但是......没有......任何人有想法?谢谢 - 杰里米

[编辑] 基于,嗯,我不知道是谁删除了他们的anwser,但它是在正确的轨道上的案件swtich失败...这是一个选项,我试图用与上述相同的想法。

function create_map_element(type,op,map){
    var _op={};
    defined(map)?_op.map=map:null;
    defined(op.clickable)       ?_op.clickable=op.clickable:null;
    defined(op.visible)         ?_op.visible=op.visible:null;
    defined(op.zIndex)          ?_op.zIndex=op.zIndex:null;

    if( ["polygon","polyline","rectangle","circle"].indexOf(type)!== -1  ){
                    defined(op.strokeColor)     ?_op.strokeColor=op.strokeColor:null;
                    defined(op.strokeOpacity)   ?_op.strokeOpacity=op.strokeOpacity:null;
                    defined(op.strokeWeight)    ?_op.strokeWeight=op.strokeWeight:null;
    }
    if( ["polygon","rectangle","circle"].indexOf(type)!== -1  ){
                    defined(op.fillColor)       ?_op.fillColor=op.fillColor:null;
                    defined(op.fillOpacity)     ?_op.fillOpacity=op.fillOpacity:null;
    }
    if( ["polygon","polyline"].indexOf(type)!== -1  ){
                    defined(op.geodesic)        ?_op.geodesic=op.geodesic:null;         
    }
    if(type == "marker"){
                    defined(op.animation)       ?_op.animation=op.animation:null;
                    defined(op.cursor)          ?_op.cursor=op.cursor:null;
                    defined(op.draggable)       ?_op.draggable=op.draggable:null;
                    defined(op.flat)            ?_op.flat=op.flat:null;
                    defined(op.icon)            ?_op.icon=op.icon:null;
                    defined(op.optimized)       ?_op.optimized=op.optimized:null;
                    defined(op.position)        ?_op.position=op.position:null;                 
                    defined(op.raiseOnDrag)     ?_op.raiseOnDrag=op.raiseOnDrag:null;                   
                    defined(op.shadow)          ?_op.shadow=op.shadow:null; 
                    defined(op.shape)           ?_op.shape=op.shape:null;                       
                    defined(op.title)           ?_op.title=op.title:null;   
    }
    switch(type){
        case "polygon" :
                return new google.maps.Polygon(_op);
            break;
        case "rectangle" :
                return new google.maps.Rectangle(_op);
            break;
        case "circle" :
                return new google.maps.Circle(_op);
            break;          
        case "polyline" :
                return new google.maps.Polyline(_op);
            break;              
        case "marker" :
                return new google.maps.Marker(_op);
            break;  
    };
}

现在可能这不起作用但是它正确地击中了所有断点,当我检查它时,它似乎很好。它只是不返回谷歌地图元素..顶部代码块(函数create_map_element3)再次工作..

1 个答案:

答案 0 :(得分:0)

不知道为什么下来投票,但似乎答案是,不,你无法解决它,因为案件将通过它迭代一切断言它的情况是来自它所在的小组。

IE:

case "polygon": case "polyline" :  case "rectangle" : case "circle" : case "marker" :   

后来的

case "marker" : 

即使 类型 “多边形”

,也为真

在每个案例下的函数中简单地运行断点表明,即使案件已经被击中,你也会进入内部。如果您删除其中一个坠落案件IE:将案例“标记”:取出然后按预期再过去 类型 “polygon”所以案件是假的。

奇怪但是它就是这样。欢迎更好的解释,这是基于Molle博士指出的事件。