// 异步加载百度地图API
define(['../testDrive'],function(module){
    return module.factory('baiduMapApi', function($http){
        // 百度地图参数
        var apiLoader = {
            baiduMapAPI : "http://api.map.baidu.com/api?v=2.0",
            baiduMapAK : "WtYgfOlGSxski47HUNkNtcW4TnPRlcGg", //
            baiduMapCB : "maplocusInit",
            baiduMapInitFns: [],
            isApiInitialized: false,
            initBaiduMap: function(fn){
                if(!this.isApiInitialized)
                    this.baiduMapInitFns.push(fn);
                else
                    fn();
            },
            makeApiUrl: function(){
                return this.baiduMapAPI +
                    "&ak=" + this.baiduMapAK +
                    "&callback=" + this.baiduMapCB;
            },
            geoConv: function(points, cb){
                var apiConv = "http://api.map.baidu.com/geoconv/v1/" +
                    "?ak=" + this.baiduMapAK +
                    "&from=1&to=5" +
                    "&callback=JSON_CALLBACK" +
                    "&coords=";
                for(var i=0;i<points.length;i++){
                    apiConv += points[i].lon + "," + points[i].lat;
                    if(i < points.length-1) apiConv += ";";
                }
                $http.jsonp(apiConv).then(function(data){
                    cb(data.data);
                });
            }
        };

        // 如果当前页面尚没有加载百度地图API,执行加载过程
        if(!window["BMAP_API_VERSION"]) {
            // 百度地图异步加载完成后的回调函数
            window[apiLoader.baiduMapCB] = function () {
                // 单个页面可能存在多个百度地图
                // 但百度地图初始化回调函数只允许有一个
                // 所以,使用数组保存所有的初始化函数
                apiLoader.baiduMapInitFns.forEach(function (fn) {
                    fn();
                });
                apiLoader.isApiInitialized = true;
            };

            // 加载百度地图API
            requirejs([apiLoader.makeApiUrl()], function () {
            });
        }
        else{
            apiLoader.isApiInitialized = true;
        }

        // 加载百度地图API
        requirejs([apiLoader.makeApiUrl()], function(){});
        
        return apiLoader;
    });
});