arcgis api for js 4.* 鹰眼图

鹰眼图和分屏差不多,再加一个小的div就可
在这里插入图片描述
1、设置鹰眼图不能平移和缩放

    view.when(disableZooming);
    function disableZooming(view) {
        function stopEvtPropagation(event) {
          event.stopPropagation();
        }
        //拖拽平移
        view.on("drag",stopEvtPropagation)
        //滚轮缩放
        view.on("mouse-wheel",stopEvtPropagation)
        //双击放大
        view.on("double-click",stopEvtPropagation)
        //Crtl+双击缩小
        view.on("double-click",["Control"],stopEvtPropagation);
        //Shift+拖拽放大
        view.on("drag", ["Shift"], stopEvtPropagation);
        //Shift+Ctrl+拖拽缩小
        view.on("drag", ["Shift", "Control"], stopEvtPropagation);
        //键盘+-缩放
        view.on("key-down",function(event){
            var keyPressed=event.key;
            var prohibitedKeys=["+","-","Shift","_","+"];
            if(prohibitedKeys.indexOf(keyPressed)!==-1){
                    event.stopPropagation()
            }
            })
        //上下左右键盘平移
        view.on("key-down",function(event){
            var keyPressed=event.key;
            if(keyPressed.slice(0,5)==="Arrow"){
                event.stopPropagation()
            }
        })

    }

2、设置小矩形查看主map的显示情况
3、移动小矩形来显示主map
因为关闭了view的drag,所以我用的pointer-downpointer-movepointer-up来实现。点用toMap转换成坐标点initPoint=overview.toMap({x:event.x,y:event.y})
initPolygon.contains(initPoint)来判断点是否在矩形中
initExtentOver.contains(updatePolygon)控制矩形不跑出鹰眼图

         overview.on("pointer-down",function(event){
                var initExtentOver=getInitExtentOver();
                var initPoint=overview.toMap({x:event.x,y:event.y})
                var initPolygon=extentGraphic.geometry;
                if (initPolygon && initPolygon.contains(initPoint)) {
                    var xmin=extentGraphic.geometry.xmin;
                    var xmax=extentGraphic.geometry.xmax;
                    var ymax=extentGraphic.geometry.ymax;
                    var ymin=extentGraphic.geometry.ymin;
                    var spatialReference=extentGraphic.geometry.spatialReference
                    graphicMove=overview.on("pointer-move",function(event){
                        var updatePoint=overview.toMap({x:event.x,y:event.y})
                        var disX=updatePoint.x-initPoint.x;
                        var disY=updatePoint.y-initPoint.y;
                        var updatePolygon=new Extent({
                            xmin:xmin+disX,
                            xmax:xmax+disX,
                            ymax:ymax+disY,
                            ymin:ymin+disY,
                            spatialReference:spatialReference
                        });
                        //设置矩形不跑出鹰眼图
                        if(!initExtentOver.contains(updatePolygon)){
                            var height=updatePolygon.height;
                            var width=updatePolygon.width;
                            if(updatePolygon.xmin<initExtentOver.xmin){
                                updatePolygon.xmin=initExtentOver.xmin;
                                updatePolygon.xmax=initExtentOver.xmin+width;
                            };
                            if(updatePolygon.xmax>initExtentOver.xmax){
                                updatePolygon.xmax=initExtentOver.xmax;
                                updatePolygon.xmin=initExtentOver.xmax-width;
                            };
                            if(updatePolygon.ymin<initExtentOver.ymin){
                                updatePolygon.ymin=initExtentOver.ymin;
                                updatePolygon.ymax=initExtentOver.ymin+height;
                            };
                            if(updatePolygon.ymax>initExtentOver.ymax){
                                updatePolygon.ymax=initExtentOver.ymax;
                                updatePolygon.ymin=initExtentOver.ymax-height;
                            };
                        }
                        extentGraphic.geometry=updatePolygon;
                        mainView.extent=updatePolygon;
                    })
                }
                
            })
            overview.on("pointer-up",function(event){
                if(graphicMove){
                    graphicMove.remove();
                }else{
                    return;
                }
                
            })
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值