百度地圖路線規劃onchange事件觸發兩次 衝突解決

    var map = new BMap.Map("allmap",{enableMapClick:false});
    map.centerAndZoom("福州市",12);
    var point = new BMap.Point();
    map.centerAndZoom(point, 12);
    map.enableScrollWheelZoom();   //啓用滾輪放大縮小,默認禁用
    map.enableContinuousZoom();    //啓用地圖慣性拖拽,默認禁用
    var add1,add2;
    //獲取發件地址
    
    
    {//規劃路線
        var searchComplete = function (results){
        if (transit.getStatus() != BMAP_STATUS_SUCCESS){
            return ;
        }
            var plan = results.getPlan(0);
                    
            var dis=plan.getDistance(true);             //獲取距離
            $("#gdInstance").val(dis);
            calFreight();
        }
        var transit = new BMap.DrivingRoute(map, {renderOptions: {map: map},
            onSearchComplete: searchComplete,
            onPolylinesSet: function(){        
        }});
    }        
    
    
    
    function getStart(dd){
        
        
        var add="福建省福州市"+$("#sendDistrict").val();
        /* var add="福建省福州市"+$("#sendDistrict").val(); */
        map.clearOverlays();    //清除地圖上所有覆蓋物
        function myFun(){
            add1=local.getResults().getPoi(0).point;
            console.log("getStart");
            console.log(add1);
            map.centerAndZoom(add1,18);
            map.addOverlay(new BMap.Marker(add1));    //添加標註
            if(add2!=null&&add1!=null){
                //規劃路線
                transit.search(add1, add2);
                
            }
        }
        var local = new BMap.LocalSearch(map, { //智能搜索
          onSearchComplete: myFun
        });
        local.search(add+dd);
    }
    
    //獲取收件地址
    function getEnd(dd){
        
        
        var add="福建省福州市"+$("#recDistrict").val();
        /* var add="福建省福州市"+$("#sendDistrict").val(); */
        map.clearOverlays();    //清除地圖上所有覆蓋物
        function myFun(){
            add2=local.getResults().getPoi(0).point;
            console.log("gdEnd");
            console.log(add2);
            map.centerAndZoom(add2,18);
            map.addOverlay(new BMap.Marker(add2));    //添加標註
            if(add2!=null&&add1!=null){
                //規劃路線
                transit.search(add1, add2);
            }
        }
        var local = new BMap.LocalSearch(map, { //智能搜索
          onSearchComplete: myFun
        });
        local.search(add+dd);
    }
/***************************************************************************************/    
     // 百度地圖API功能
    function G(id) {
        return document.getElementById(id);
    }
    
    var ac = new BMap.Autocomplete(    //建立一個自動完成的對象
        {"input" : "gdAddstart"
        ,"location" : map
    });

    ac.addEventListener("onhighlight", function(e) {  //鼠標放在下拉列表上的事件
    var str = "";
        var _value = e.fromitem.value;
        var value = "";
        if (e.fromitem.index > -1) {
            value = _value.province +  _value.city +  _value.district +  _value.street +  _value.business;
        }    
        str = "FromItem<br />index = " + e.fromitem.index + "<br />value = " + value;
        
        value = "";
        if (e.toitem.index > -1) {
            _value = e.toitem.value;
            value = _value.province +  _value.city +  _value.district +  _value.street +  _value.business;
        }    
        str += "<br />ToItem<br />index = " + e.toitem.index + "<br />value = " + value;
        G("searchResultPanel").innerHTML = str;
    });

    var myValue;
    ac.addEventListener("onconfirm", function(e) {    //鼠標點擊下拉列表後的事件
        console.log("123");
    var _value = e.item.value;
        myValue = _value.province +  _value.city +  _value.district +  _value.street +  _value.business;
         G("searchResultPanel").innerHTML ="onconfirm<br />index = " + e.item.index + "<br />myValue = " + myValue; 
        
        setPlace();
        console.log("執行完後");
        console.log(add1);
    });

    function setPlace(){
        map.clearOverlays();    //清除地圖上所有覆蓋物
        function myFun(){
            var pp = local.getResults().getPoi(0).point;    //獲取第一個智能搜索的結果
            add1=pp;
            map.centerAndZoom(pp, 18);
            map.addOverlay(new BMap.Marker(pp));    //添加標註
            getDistance();
        }
        var local = new BMap.LocalSearch(map, { //智能搜索
          onSearchComplete: myFun
        });
        local.search(myValue);
    }
    
    /*********************************************************************************/
     
    var ac2 = new BMap.Autocomplete(    //建立一個自動完成的對象
            {"input" : "gdAddend"
            ,"location" : map
        });

        ac2.addEventListener("onhighlight", function(e) {  //鼠標放在下拉列表上的事件
        var str = "";
            var _value = e.fromitem.value;
            var value = "";
            if (e.fromitem.index > -1) {
                value = _value.province +  _value.city +  _value.district +  _value.street +  _value.business;
            }    
            str = "FromItem<br />index = " + e.fromitem.index + "<br />value = " + value;
            
            value = "";
            if (e.toitem.index > -1) {
                _value = e.toitem.value;
                value = _value.province +  _value.city +  _value.district +  _value.street +  _value.business;
            }    
            str += "<br />ToItem<br />index = " + e.toitem.index + "<br />value = " + value;
            G("searchResultPanel2").innerHTML = str;
        });

        var myValue2;
        ac2.addEventListener("onconfirm", function(e) {    //鼠標點擊下拉列表後的事件
        var _value = e.item.value;
            myValue2 = _value.province +  _value.city +  _value.district +  _value.street +  _value.business;
            G("searchResultPanel2").innerHTML ="onconfirm<br />index = " + e.item.index + "<br />myValue = " + myValue2;
            
            setPlace2();
        });
        function setPlace2(){
            map.clearOverlays();    //清除地圖上所有覆蓋物
            function myFun(){
                var pp = local.getResults().getPoi(0).point;    //獲取第一個智能搜索的結果
                add2=pp;
                map.centerAndZoom(pp, 18);
                map.addOverlay(new BMap.Marker(pp));    //添加標註
                getDistance();
            }
            var local = new BMap.LocalSearch(map, { //智能搜索
              onSearchComplete: myFun
            });
            local.search(myValue2);
        } 
        
        /*********************************************************************************/
    //獲取運輸距離
    function getDistance(){
        if(add2!=null&&add1!=null){
            transit.clearResults();
            transit.search(add1, add2);
        }
    }

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章