провалиться через переключатель, чтобы элемент карты Google, похоже, не работал - PullRequest
0 голосов
/ 02 марта 2012

Я пытался отладить это без удачи.У меня есть случай сброса переключателя, который, кажется, работает, когда я наблюдаю за стеком, и он достигает всех точек разрыва, которые я установил (представьте, что это тип многоугольника, и я ставлю точку разрыва на все, что должно появиться).Я ударил каждого из них, но это не удалось.Итак ... вот первая, которая работает.

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

, которая работает .. Я прекрасно вывел элемент карты Google.Теперь с изменением, и снова, когда я отлаживаюсь, я нажимаю на все точки останова. _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;  
    };
}

Но когда я устанавливаю точки останова налиния повторения запускает его, и все выглядит правильно ... но .. ничего .. У кого-нибудь есть идея?Спасибо - Джереми

[РЕДАКТИРОВАТЬ] Исходя из того, что я не знаю, кто удалил свой ответ, но это было на правильном пути причины неудачи дела ...вот вариант, который я пытался сделать с той же идеей, что и выше.

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

Теперь, как ни странно, это не работает слишком, НО .. он правильно охватывает все точки останова, и когда я проверяю его, кажетсяЧто ж.Он просто не возвращает элемент карты Google ... опять же, работает верхний блок кода (функция create_map_element3) ..

1 Ответ

0 голосов
/ 06 марта 2012

Не знаю, почему проголосовали против, но кажется, что ответ: Нет, , вы не можете это исправить, так как случай будет повторяться, пока все в нем утверждает, что это правда из группы, в которой он был.

IE:

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

СДЕЛАНО позже

case "marker" : 

ИСТИНА, даже если тип равен "многоугольник"

Простое выполнение точек останова в функции для каждого случая показывает, что вы попали внутрь, даже если случай уже был достигнут. Если вы удалите один из IE, выпадающих через случаи: извлеките case "marker": , затем, как и ожидалось, он снова пройдет, как и type is «многоугольник» , поэтому случай был ложным.

Странно, но это то, что есть. Лучшее объяснение приветствовалось, и это было основано на происшествии, указанном доктором Молле.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...