2.21 未封装功能的使用
前文也提到了,JS API对CooSDK绝大部分适用于B/S架构的功能进行了封装,但还有少部分特性因使用难度,封装难度、稳定性问题暂未接入。遇到这些功能开发者需要使用怎么办呢?
我们可以这么做,在CooMap对象中,保存有SDK原生API的3个组件对象,sdkCtrl、map、tools,分别对应SDK控件对象,GetIMapMgrPtr返回的地图对象,GetIToolsCOMPtr返回的tool对象。再通过这三个对象,来调用相应的原生API。
假设ModelData类因为CooSDK原生API的功能更新迭代,临时加入了某配置参数“LoadSpeed”,而JS API因为版本问题并未及时更新,这时候开发者可以采用使用原生API的方式,来替换掉JS API关于模型加载的代码,比如代码封装在function A里
function A(){
var modelData = new CooSDK.ModelData({
url: xxxxxx
});
}
相应的,根据原生API的写法,进行如下替换:
function A(){
// 通过CooMap的map属性拿到原生API所需的map对象
var map = cooMap.map;
// 原生API代码
var tlo = map.CreateLayerOptions("modelOpt");
tlo.AddConfig("LayerOptionsName", "ModelLayerOptions");
tlo.AddConfig("DataSourceTypeName", "c3ss");
tlo.AddConfig("Compress", "true");
// 新增的参数
tlo.AddConfig("LoadSpeed", 5);
// 数据路径
tlo.AddConfig("Url", xxxxxx);
// 模型图层的创建
var modelData = map.CreateLayer("ModelLayer", tlo);
// 模型图层添加至场景
map.AddLayer(modelData);
}
通过以上处理,可以使用到SDK最新最全的功能。同时,请把此类需求上报至科澜公司技术中心SDK组,用于进一步深层次封装。