• Arcgis for javascript不同的状态下自己定义鼠标样式


    俗话说:爱美之心。人皆有之。

    是的。没错,即使我仅仅是一个做地图的,我也希望自己的地图看起来好看一点。

    在本文,给大家讲讲在Arcgis for javascript下怎样自己定义鼠标样式。


    首先。说几个状态。1、鼠标在地图上面移动;2、按住鼠标左键拖拽鼠标。3、拉框放大地图;4、拉框缩小地图。

    鼠标在地图上面时为

    按住鼠标拖拽地图时为

    拉框放大地图时为

    拉框缩小地图时为


    接下来,说说我的实现思路。

    第一种状态,在地图载入完毕时出现,代码:

     map.on("load",function(){
         map.setMapCursor("url(cursor/default.cur),auto");
     });
    另外一种状态,地图拖拽时出现,此时。须要分别监听map的mouse-drag-start和mouse-drag-end事件,详细代码例如以下:

    map.on("mouse-drag-start",function(){
        map.setMapCursor("url(cursor/pointer.cur),auto");
    });
    map.on("mouse-drag-end",function(){
        map.setMapCursor("url(cursor/default.cur),auto");
    });
    第三种和第四种状态时。须要定义Navigation,例如以下:

    var navToolbar = new esri.toolbars.Navigation(map);
    这两种状态在点击button时触发,代码例如以下:

                on(dom.byId("zoom_in"), "click", function(event){//拉框放大
                    map.setMapCursor("url(cursor/zoom-in.cur),auto");
                    map.on("mouse-drag-start",function(){
                        map.setMapCursor("url(cursor/zoom-in.cur),auto");
                    });
                    navToolbar.activate(esri.toolbars.Navigation.ZOOM_IN);
                });
                on(dom.byId("zoom_out"), "click", function(event){//拉框缩小
                    map.setMapCursor("url(cursor/zoom-out.cur),auto");
                    map.on("mouse-drag-start",function(){
                        map.setMapCursor("url(cursor/zoom-out.cur),auto");
                    });
                    navToolbar.activate(esri.toolbars.Navigation.ZOOM_OUT);
                });
    说明:在触发这两种状态时,还要同一时候设置mouse-drag-start触发时的状态。

    最后,操作结束后一切回归原始状态。代码例如以下:

                navToolbar.on("extent-history-change", function(){
                    navToolbar.deactivate();
                    map.on("mouse-drag-start",function(){
                        map.setMapCursor("url(cursor/pointer.cur),auto");
                    });
                });
    这样,在上述四种状态下的鼠标状态时由我们自己控制样式的,以下是完整代码:

    <!DOCTYPE html>
    <html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
        <meta name="viewport" content="initial-scale=1, maximum-scale=1,user-scalable=no"/>
        <title>Simple Map</title>
        <link rel="stylesheet" href="http://localhost/arcgis_js_api/library/3.9/3.9/js/esri/css/esri.css">
        <style>
            html, body, #map {
                height: 100%;
                margin: 0;
                padding: 0;
            }
            body {
                background-color: #FFF;
                overflow: hidden;
                font-family: "Trebuchet MS";
            }
            #map_ctrl{
                z-index: 99;
                position: absolute;
                top: 20pt;
                right: 10pt;
                background: #fff;
            }
            .button{
                padding: 3px;
                background: #eee;
                text-align: center;
                font-size: 12px;
                font-family: "微软雅黑";
                border: 1px solid #eee;
            }
            .button:hover{
                background: #ccc;
                border: 2px solid #ccc;
                 cursor: pointer;
            }
        </style>
        <script src="http://localhost/arcgis_js_api/library/3.9/3.9/init.js"></script>
        <script>
            var map;
            require([
                "esri/map",
                "esri/layers/ArcGISTiledMapServiceLayer",
                "esri/layers/GraphicsLayer",
                "esri/graphic",
                "esri/symbols/PictureMarkerSymbol",
                "dojo/on",
                "dojo/dom",
                "dojo/domReady!"],
            function(Map, Tiled, GraphicsLayer, Graphic, PictureMarkerSymbol,on,dom) {
                map = new Map("map",{logo:false});
                var tiled1 = new Tiled("http://localhost:6080/arcgis/rest/services/chinamap/MapServer");
                var mouseLayer = new GraphicsLayer();
                map.addLayer(tiled1);
                map.setLevel(4);
                map.on("load",function(){
                    map.setMapCursor("url(cursor/default.cur),auto");
                });
                map.on("mouse-drag-start",function(){
                    map.setMapCursor("url(cursor/pointer.cur),auto");
                });
                map.on("mouse-drag-end",function(){
                    map.setMapCursor("url(cursor/default.cur),auto");
                });
                var navToolbar = new esri.toolbars.Navigation(map);
                on(dom.byId("zoom_in"), "click", function(event){//拉框放大
                    map.setMapCursor("url(cursor/zoom-in.cur),auto");
                    map.on("mouse-drag-start",function(){
                        map.setMapCursor("url(cursor/zoom-in.cur),auto");
                    });
                    navToolbar.activate(esri.toolbars.Navigation.ZOOM_IN);
                });
                on(dom.byId("zoom_out"), "click", function(event){//拉框缩小
                    map.setMapCursor("url(cursor/zoom-out.cur),auto");
                    map.on("mouse-drag-start",function(){
                        map.setMapCursor("url(cursor/zoom-out.cur),auto");
                    });
                    navToolbar.activate(esri.toolbars.Navigation.ZOOM_OUT);
                });
                navToolbar.on("extent-history-change", function(){
                    navToolbar.deactivate();
                    map.on("mouse-drag-start",function(){
                        map.setMapCursor("url(cursor/pointer.cur),auto");
                    });
                });
            });
        </script>
    </head>
    
    <body>
    <div id="map">
        <div id="map_ctrl">
            <a id="zoom_in" class="button">拉框放大</a>
            <a id="zoom_out" class="button">拉框缩小</a>
        </div>
    </div>
    </body>
    </html>

    源代码下载





  • 相关阅读:
    netcore跨域
    阿里云oss通过api上传图片后不能预览只能下载的解决方法
    阿里云oss对图片的处理:缩略、剪裁、锐化等
    通过字节值判断图片格式
    Linux 常见命令 用户管理命令(二)
    nohup命令
    selinux基础介绍
    LINUX中的limits.conf配置文件
    【ASP.NET】使用Jquery缓存数据
    .net 4.0以下版本实现web socket服务
  • 原文地址:https://www.cnblogs.com/blfshiye/p/5137050.html
Copyright © 2020-2023  润新知