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

news/2024/7/24 4:50:18

俗话说:爱美之心,人皆有之。是的,没错,即使我只是一个做地图的,我也希望自己的地图看起来好看一点。在本文,给大家讲讲在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);
这两种状态在点击按钮时触发,代码如下:

            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>

源码下载






http://www.niftyadmin.cn/n/1857375.html

相关文章

Nignx 应用与功能实现 2022-1-1

Java调优进阶总目录 Nginx 核心功能与配置Java调优进阶总目录1 请求定位1.1 资源访问1.2 路径匹配优先级1.2.1 普通匹配1.2.2 长路径相匹配1.2.3 正则匹配1.2.4 短路匹配1.2.5 精确匹配1.3 缓存配置1.3.1 http{}模块的缓存全局定义proxy_cache_pathproxy_temp_path1.3.2 locati…

Arcgis for Javascript之featureLayer图和属性的互操作

说明&#xff1a;主要实现加载FeatureLayer与显示属性表&#xff0c;并实现属性表与地图的联动&#xff0c;首先&#xff0c;看看实现后的效果&#xff1a; 显示效果 如上图所示&#xff0c;本文章主要实现了以下几个功能&#xff1a;1、FeatureLayer属性表的分页加载与显示&a…

python爬取小说写入txt_一个简易的Python爬虫,将爬取到的数据写入txt文档中

代码如下&#xff1a; import requests import re import os #url url "http://wiki.akbfun48.com/index.php?title%E4%B9%83%E6%9C%A8%E5%9D%82%E5%B7%A5%E4%BA%8B%E4%B8%AD&variantzh-hans" #请求头 headers { "User-Agent":"Mozilla/5.0 (W…

全球最大照片网站 Unsplash 开放图片检索数据集

By 超神经内容概要&#xff1a;全球最大的照片网站 Unsplash 宣布平台已经开放了超过 20 万名摄影师的近 200 万张免费图片的&#xff0c;并开放了两个图片检索结果的数据集。关键词&#xff1a;数据集 图片搜索 图像分类Unsplash 是世界上最大的照片摄影网站之一&#xff0c;由…

第一节 Redis 使用及哨兵集群 2022-1-2

Java组件总目录 Redis 使用及哨兵集群Java组件总目录一 Redis基本数据类型使用场景1 String2 List 存储列表结构3 Hash4 Set5 Zset二级目录三级目录二 Redis 的补充数据类型1 BitMap2 HyperLogLog3 Geospatial三 Redis 消息模式 &#xff08;了解&#xff09;3.1 队列模式注意事…

python基础类库_python基础知识---简单语法

1.if语句 a 10 b 20 if(a>b): print("a max!") else: print("b max!") b max! student "zhangxiaoyu" if (student "zhanxgiaoyu"): print("YES") else: print("NO") NO if (student ! "zhanxgiaoyu&…

豪赌 ARM 梦碎:63 岁孙正义的「花甲历险记」

By 超神经内容概要&#xff1a;近期关于软银卖 ARM 还债的消息被各大媒体争相报道&#xff0c;尤其在最近传出 NVIDIA 可能将以 400 亿英镑的价格收购 ARM&#xff0c;引发业界一片哗然。孙正义似乎流年不顺&#xff0c;一直在做赔本买卖&#xff0c;而且似乎在 2016 年就出现了…

Javascript+CSS实现影像卷帘效果

用过Arcgis的筒子们对于Arcmap里面的一个卷帘效果肯定记忆很深刻&#xff0c;想把它搬到自己的WebGIS系统中去&#xff0c;抱着同样的想法&#xff0c;我也对这种比较炫的卷帘效果做了一下研究&#xff0c;吼吼&#xff0c;出来了&#xff0c;给大家汇报一下成果&#xff0c;先…