ArcGIS API For Javascript :双屏(多屏)地图联动的方法

本文介绍了一种在前端实现双屏或多屏地图联动的方法,通过监听地图缩放和拖拽事件,利用地图四至绑定不同地图对象,确保地图在操作后保持同步。详细介绍了HTML布局、地图对象定义、图层添加及地图事件监听的具体步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

在遇到地图对比的应用场景下,我们需要双屏地图或者多屏地图来满足我们的业务需求。

 

解决思路:首先生成两份(多份)地图,然后通过监听地图缩放拖拽,用地图四至将不同的地图对象做绑定,实现多地图联动。

 

前端部分

前端加入两个 id 不同的 <div> 标签,作为地图的容器。例如:

<div id="mapDiv" style="position:absolute;left:0;width:50%;height:100%;"></div>
<div id="mapdemo" style="position:absolute;left:50%;width:50%;height:100%;"></div>

这么做是将屏幕从中间一分为二,拆分为:

左侧地图
   (mapDiv)
右侧地图
   (mapdemo)

 

JS 部分

定义地图对象

两个地图对象分别匹配到前端的容器中,例如:

map = new esri.Map("mapDiv",{
    lods: lods,
    logo: false,
    zoom:11,
    minZoom:3,
    maxZoom:20,
    center: [87.6,43.8],
    slider:false,
});
toggleMap = new esri.Map("mapdemo",{
    lods: lods,
    logo: false,
    zoom:11,
    minZoom:3,
    maxZoom:20,
    center: [87.6,43.8],
    slider:false
});

需要注意,多个地图的基本属性保持一致性。

 

添加底图

左侧地图我们想要显示卫星影像,右侧地图显示平面地图,则可以为不同的地图对象添加不同的图层。例如:

var ImgMap = new GoogleMapLayer();
ImgMap.id = "ImgMap";          
map.addLayer(ImgMap);

var VectorMap = new GoogleMapVectorLayer();
VectorMap.id = "VectorMap";
toggleMap.addLayer(VectorMap);

这里我使用了拓展类调用谷歌地图的方法,简化代码,大家也可以根据自己的地图服务资源对图层进行替换。

 

监听地图

map.on("zoom-end",function(){
    toggleMap.setExtent(map.extent);
});
map.on("mouse-up",function(){
    toggleMap.setExtent(map.extent);
});
toggleMap.on("zoom-end",function(){
    map.setExtent(toggleMap.extent);
});
toggleMap.on("mouse-up",function(){
    map.setExtent(toggleMap.extent);
});

通过对两个地图“缩放结束”与“鼠标左键抬起”的监听,来获取地图范围产生变化结束的四至,然后将未产生变化的地图范围也设置未产生变化后的四至,从而实现两个地图在缩放与拖拽后能实现联动。

 

我没有对地图缩放与拖拽过程中做监听与联动,大家如有需要也可以在地图监听类型中使用诸如“mouse-drag-start”、“mouse-drag-end”等监听事件。

更多事件可以移步 - > 地图监听事件列表

 

最终我们就实现了左右两侧地图的同屏联动。

 

拓展联想

基于上述的联动的效果,我们不仅可以实现同屏多地图的展示与联动,还可以实现同屏不同专题地图的动态演示。

大家如有好的想法,请在下方评论留言。

 

转载于:https://www.cnblogs.com/dawud/p/10366046.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值