Arcgis for JS之对象捕捉

在web操作,如绘制或者测量的时候,为了精确,需要捕捉到某一图层的对象,在此,讲解下如何在Arcgis for JS中实现捕捉对象。 首先,在地图中添加一个graphiclayer:

            gLayer = new GraphicsLayer();
            map.addLayer(gLayer);

接着,在gLayer中添加几个对象:

            map.on("load",function(){
                var items = geometry.item;
                gLayer.add(new Graphic(WktToPoint(items[0].wkt, {"wkid":4326}),sms));
                gLayer.add(new Graphic(WktToPolyline(items[1].wkt, {"wkid":4326}),sls));
                gLayer.add(new Graphic(WktToPolygon(items[2].wkt, {"wkid":4326}),sfs));
            });

接下来,定义drawtoolbar以及绘制完成后的事件:

            var drawToolbar = new esri.toolbars.Draw(map,{tooltip: "place text"});
            drawToolbar.on("draw-end",showDrawResults);
            function showDrawResults(evt){
                drawToolbar.deactivate();
                map.setMapCursor("default");
                var geometry = evt.geometry;
                map.graphics.add(new Graphic(geometry,sls));
            };

接下来,定义一个Button,并添加button的click事件:

<button id="draw" style="z-index: 99;">绘制图形</button>
            on(dom.byId("draw"), "click", function(){
                drawToolbar.activate(esri.toolbars.Draw.POLYLINE);
            });

接下来定义map的捕捉设置:

            var snapManager = map.enableSnapping({
                snapKey:has("mac") ? keys.META : keys.CTRL
            });
            var layerInfos = [{layer: gLayer}];
            snapManager.setLayerInfos(layerInfos);

备注:

此处,需要调用的dojo包包括:

        require([
            "esri/map",
            "esri/layers/GraphicsLayer",
            "esri/graphic",
            "esri/SnappingManager",
            "esri/sniff",

            "dojo/_base/event",
            "dojo/on",
            "dojo/dom",
            "dojo/keys",
            "dojo/domReady!"],
        function(Map, GraphicsLayer, Graphic, Point, SnappingManager, has,
                 event, on,dom, keys) {

如有疑问请联系:

QQ:1004740957

Email:niujp08@qq.com

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏python学习指南

Python爬虫(十二)_XPath与lxml类库

Python学习指南 有同学说,我正则用的不好,处理HTML文档很累,有没有其他的方法? 有!那就是XPath,我们可以用先将HTML文档转换成XML文...

33610
来自专栏阮一峰的网络日志

CSS 变量教程

今年三月,微软宣布 Edge 浏览器将支持 CSS 变量。 这个重要的 CSS 新功能,所有主要浏览器已经都支持了。本文全面介绍如何使用它,你会发现原生 CSS...

35111
来自专栏coding

2018年Go语言实战笔记2string字符串处理time时间处理指针strconv 类型转换rand 随机数函数几个实例

接触一门新语言,了解其语法结构,常用的包是必须的,同时也是无聊的。有过其他编程语言基础的同学,学习go的语法很简单,参照 go文档 过一遍就能对go的语法有大致...

961
来自专栏Golang语言社区

Go语言的标准输入-scan 和bufio

除了f mt 和 os ,我们还需要用到 bufio 来实现带缓冲输入(input)和输出(output)读取用户的输入数据 我们怎样读取用户从键盘(控制台)输...

52411
来自专栏Coco的专栏

【深入浅出jQuery】源码浅析--整体架构

1453
来自专栏前端知识分享

第208天:jQuery框架封装(一)

1.1冒泡:事件按照从最特定的事件目标到最不特定的事件目标(document对象或者body)的顺序触发。

3054
来自专栏Java后端技术

CSS命名法

  1.驼峰命名法:除第一个单词的首字母小写之外,其余的单词首字母均大写。如:#headBlock(2).

781
来自专栏游戏杂谈

关于AS3的事件移除释疑

as3.0中的事件Event(位于包flash.events内,继承至Object,子类有…)

1102
来自专栏IMWeb前端团队

Preact 源码解析系列一 :简单DOM渲染

用过Preact的人都知道,在每个JS文件之前,都需要写 /** @jsx h */,那这句话是什么作用呢? 先从JSX说起。 解析与编译 JSX实际上就是一个...

2976
来自专栏互联网杂技

js事件

1.document.write(""); 输出语句 2.JS中的注释为// 3.传统的HTML文档顺序是:document->html->(head,body...

39711

扫码关注云+社区

领取腾讯云代金券