从webapp目录可以看出地图归mapManager处理,所以在MapManager.js中找关于加载地图的方法,
很容易在里面找到showMap方法:
下面有另一个方法_showMap方法,查看定义,发现里面是根据配置文件里面是3D还是2D的方式加载地图的,因为现在只能用2D的所以直接跳到else里面,在这个_show2DWebMap里面又是根据配置文件里面是否有itemID(online上的地图对应的ID)来加载地图的,系统默认会给app指定一个itemID,而我们需要做的就是不用itemID,用我们本地server上的数据;现在查看定义,跳到_show2DLayersMap方法中,这里面
根据配置文件的mapOptions(地图范围)来创建地图(没有地图数据),
,然后通过遍历config来创建地图,查看定义,
发现是对配置文件中的map里面的字段进行判断,然后来创建地图的,这里的cb(layerConfig,i)===lang.hitch(this, function(layerConfig)
再查看createLyer()的定义,发现要遍历config里面的很多字段
,现在就需要为config文件添加加载本地数据所需要的字段和数据了。
现在的layerConfige就是一个数组,因为这次只有与一副地图所以只能遍历一次,看到第一个循环for (var p in layerConfig)要循环keyProperties那么就要先添加‘label‘, ‘url‘, ‘type‘, ‘icon‘, ‘infoTemplate‘, ‘isOperationalLayer‘这几个属性
接下来又判断图层的infoTemplate,可以看到infoTemplate中的一些属性具体有title,content,width,height
最重要的加载地图是要有地址的,通过合格可以看到,配置文件里面应该有url,所以加载一个
然后还有一个属性是bool值
至此所有属性已加载完毕如下:
要运行本地地图就要把加载online上的可能去了,所以在配置文件里找到itemId,将他制空
现在运行就可以看到结果了: