2.20 初始化加载
通常在项目开发中,会遇到三维地图需要初始化加载数据及功能的情况,在JS API中,常规写法不被允许,可能会引起控件异常,比如在页面onload函数中这么写,可能会引起控件异常或者页面崩溃:
// 创建CooMap对象
var cooMap = new CooSDK.CooMap("map");
// 创建ModelData对象
var modelData = new CooSDK.ModelData({
url: path
isLocate: true
});
深层次的原因通常与IE的初始化运行机制有关,在原生API中,往往通过setTimeout函数,对加载数据的函数,做延时加载处理。
但在JS API中,做了更高层级的封装,来避免开发者对此种操作产生困扰。您有两种方式来实现初始化加载效果。
第一种方式
您可在CooMap的API接口说明中,发现这个属性:initCallback,该属性支持传入用户自定义的函数,如下:
// 需在new CooSDK.CooMap之前声明
var initFunc = function(){
//do something
}
var cooMap = new CooSDK.CooMap("map", {
delay: 1,
initCallback: initFunc
});
第二种方式
第二种方式则是常规的setTimeout做法,在地图初始化代码后紧跟着设置,如:
var cooMap = new CooSDK.CooMap("map");
// 注意,在非IE浏览器下,这里的延时不可设置过小,通常在1000-2000ms之间,否则极易发生初始化失败现象。
setTimeout("initFunc()", 1000);
var initFunc = function(){
//do something
}
通常强烈建议使用第一种方式来进行初始化加载操作。第二种方式不稳定,不推荐。