1、准备
地图联动其实就是当一张的extent发生了变化,另一张图的extent也要同步变化,这样就可以两张图的范围同步了。同理,这样就可以扩展到N张图进行联动。所以这次的目标就是实现添加任意的地图都要可以联动。首先依然是先看一下官方文档。找到有用的方法或者事件。
整体的难点在于如何判断主地图(有鼠标动作的地图),通过官方文档,我们可以利用mouse-over事件来进行主地图的判断,在添加地图时,监听每张地图的mouse-over事件。
2、开始
//添加地图,相互联动
addMap: function (map) {
var self = this;
if (this._maps.indexOf(map) != -1) return;//如果已经在联动地图集合就不添加
var graphicLayer = new GraphicLayer({ id: "mapLinkagerLayer" });
var mouseHandler = map.on("mouse-over", function (evt) {//鼠标在哪个地图上,该地图就是激活地图
self.activeMap = map;
self._clearActiveMapEvents();
self._bindActiveMapEvents();
});
var graphic = new Graphic();
graphic.setSymbol(this.mouseSymbol);
map.addLayer(graphicLayer);
graphicLayer.add(graphic)
this._maps.push(map);
this._mapMouseOverEventHandlers.push(mouseHandler);
this._mouseGraphicLayers.push(graphicLayer);
this._mouseGraphics.push(graphic);