將百度坐標轉換的javascript api官方示例改寫成傳統的回調函數形式


改寫前:

百度地圖中坐標轉換的JavaScript API示例官方示例如下:

var points = [new BMap.Point(116.3786889372559,39.90762965106183),
              new BMap.Point(116.38632786853032,39.90795884517671),
              new BMap.Point(116.39534009082035,39.907432133833574),
              new BMap.Point(116.40624058825688,39.90789300648029),
              new BMap.Point(116.41413701159672,39.90795884517671)
];

//地圖初始化
var bm = new BMap.Map("allmap");
bm.centerAndZoom(new BMap.Point(116.378688937,39.9076296510), 15);

//坐標轉換完之后的回調函數
translateCallback = function (data){
  if(data.status === 0) {
    for (var i = 0; i < data.points.length; i++) {
        bm.addOverlay(new BMap.Marker(data.points[i]));
        bm.setCenter(data.points[i]);
    }
  }
}
setTimeout(function(){
    var convertor = new BMap.Convertor();
    convertor.translate(points, 1, 5, translateCallback)
}, 1000);

改寫后:

將上述代碼改寫為傳統的JavaScript回調函數形式:

function translate(points,callback){
  var convertor=new BMap.Convertor();
  convertor.translate(points, 1, 5, callback)
  translateCallback = function (data){
    if(data.status === 0) {
      var res=[]; //res用來存放轉換后的points數組
      for (var i = 0; i < data.points.length; i++) {
          bm.addOverlay(new BMap.Marker(data.points[i]));
          res.push(data.points[i]);
      }
      callback(res)
    }
  }
}

//再調用translate函數,
translate(points,function(data){
    console.log(data); //data為轉換后的points數組
})

改寫后translate函數接受兩個參數,第一個參數為原始的百度points數組,第二個參數傳入一個回調函數。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM