ArcGIS实现绘制点、线、面等图形

一、实现的思路

首先声明一个GraphicLayer的图层,(该图层是客户端类型图层,与ArcGIS Server发布的图层没有任何联系,绘画的对象也在客户端完成)然后生命工具类 Draw,根据点选的不同进行绘画,然后将绘画的图形进行渲染

二、HTML布局

<div id="info">
    <sapn>点击你所要绘画的图形</span>
    <button id="Point">Point</button>
    <button id="Multipoint">Multipoint</button>
    <button id="Line">Line</button>
    <button id="Polyline">Polyline</button>
    <button id="FreehandPolyline">Freehand Polyline</button>
    <button id="Triangle">Triangle</button>
    <button id="Extent">Rectangle</button>
    <button id="Circle">Circle</button>
    <button id="Ellipse">Ellipse</button>
    <button id="Polygon">Polygon</button>
    <button id="FreehandPolygon">Freehand Polygon</button>
</div>

<div id="mapDiv"></div>

主要的代码

1、引用的类库

  var map, tb;
  require([
    "esri/map",
    "esri/toolbars/draw",
    "esri/symbols/SimpleMarkerSymbol",
    "esri/symbols/SimpleLineSymbol",
    "esri/symbols/PictureFillSymbol",
    "esri/symbols/CartographicLineSymbol",
    "esri/graphic",
    "esri/Color",
    "dojo/dom",
    "dojo/on",
    "dojo/domReady!"
  ], function(
    Map, Draw,
    SimpleMarkerSymbol, SimpleLineSymbol,
    PictureFillSymbol, CartographicLineSymbol,
    Graphic,
    Color, dom, on
  ) {
    map = new Map("mapDiv", {
      basemap: "streets",
      center: [-25.312, 34.307],
      zoom: 3
    });

2、初始化绘图工具

map.on("load", initToolbar);

3、绘图工具函数的封装

function initToolbar() {
          tb = new Draw(map);
          tb.on("draw-end", addGraphic);
          on(dom.byId("info"), "click", function(evt) {
            if ( evt.target.id === "info" ) {
              return;
            }
            var tool = evt.target.id.toLowerCase();//转换为小写
            map.disableMapNavigation();
            //激活绘图工具
            tb.activate(tool);
          });
        }

4、填充的声明

//设置点的填充样式
var markerSymbol = new SimpleMarkerSymbol();
markerSymbol.setColor(new Color("#00FFFF"));
//设置线的填充样式
        var lineSymbol = new CartographicLineSymbol(
          CartographicLineSymbol.STYLE_SOLID,
          new Color([255,0,0]), 10,
          CartographicLineSymbol.CAP_ROUND,
          CartographicLineSymbol.JOIN_MITER, 5
        );
//设置面的填充样式
        var fillSymbol = new PictureFillSymbol(
          "/Imaage/timg.jpg",
          new SimpleLineSymbol(
            SimpleLineSymbol.STYLE_SOLID,
            new Color('#000'),
            1
          ),
          42,
          42
        );

推荐一个画图js开源插件http://raphaeljs.com/icons/#talkq

5、添加到GraphicLayer的函数封装

function addGraphic(evt) {
          //关闭绘图工具
          tb.deactivate();
           //禁用导航
          map.enableMapNavigation();
          var symbol;
          if ( evt.geometry.type === "point" || evt.geometry.type === "multipoint") {
            symbol = markerSymbol;
          } else if ( evt.geometry.type === "line" || evt.geometry.type === "polyline") {
            symbol = lineSymbol;
          }
          else {
            symbol = fillSymbol;
          }
          map.graphics.add(new Graphic(evt.geometry, symbol));
        }

原链接:https://www.cnblogs.com/tuboshu/p/10752366.html

画圆画多边形 ArcGIS API for JavaScript

require([
         "esri/geometry/Circle",
	 "esri/geometry/Polygon",
	 "esri/Map",
	 "esri/layers/GraphicsLayer",
	 "esri/Graphic"
 
	],function(Circle,Polygon,GraphicsLayer,Map){
	
	var map = new Map("map",{
		center:[-81.3765, 28.54175)],
		slider:false,
		maxZoom: 6,
		fadeOnZoom: true
	});
	var graLayer = new GraphicsLayer();
	
	//画圆  Circle类
	//定义要画的图形的线条颜色
	var symbol = new SimpleFillSymbol().setColor(null).outline.setColor("red");
	
	// lon 经度 lat纬度(圆的中心点) radius 半径
	function setCircle(lon,lat,radius){
		var pt = new Point(lon,lat,map.spatialReference);
		var radius = radius;
		var circle = new Circle({
			crenter: pt,
			geodesic: true,
			radius: radius
		});
		
		var graphic = new Graphic(circle,symbol);
		graLayer.add(graphic);
	}
	
	//画多边形  Polygon
	function setPolygon(){
		var polygon = new Polygon(new SpatialReference({wkid:4326}));
		//添加多边形的各个角的顶点坐标,注意:首尾要链接,也就是说,第一个点和最后一个点要一致
		polygon.addRing([[-180,-90],[-180,90],[180,90],[180,-90],[-180,-90]]);
		var graphic = new Graphic(circle,symbol);
		graLayer.add(graphic);
	}
	//创建地图服务图层
	var tiledMapServiceLayer = new ArcGISTiledMapServiceLayer("http://server.arcgisonline.com/ArcGIS/rest/services/NGS_Topo_US_2D/MapServer");
	map.addLayer(tiledMapServiceLayer);
	map.addLayer(graLayer);
	//打开地图
	map.centerAndZoom(new Point(-81.3765, 28.54175)),6);
});
  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: ArcGIS API for JS是一款面向Web开发者的地图API,它提供了丰富的API,帮助开发者构建自定义交互式地图应用程序。其中包括绘制线面等功能。 绘制 使用ArcGIS API for JS绘制十分简单,在地图上击鼠标左键即可绘制一个。每个都具有独立的坐标和属性信息,可以随时编辑修改。另外,开发者还可以通过API设置的图标、大小、颜色等样式,使得在地图上更加醒目。 绘制线 绘制线ArcGIS API for JS的另一个常见功能,它可以通过鼠标在地图上击左键进行绘制。开发者可以通过API设置线的颜色、宽度、描述信息等属性,从而将其与其他地图要素区分开来。此外,ArcGIS API for JS还支持绘制多段线,使得地图上的路线更加真实。 绘制绘制面是ArcGIS API for JS最强大的功能之一,它可以让开发者创建自己的多边形、圆形、矩形等形状。开发者可以自定义面的颜色、透明度、边框、填充等属性,从而轻松创建专业级别的地图要素。此外,API还支持多个面的合并、分割和编辑,使得地图要素更加丰富、灵活。 总之,ArcGIS API for JS提供了丰富的绘图功能,不仅可以帮助开发者快速创建自定义地图应用程序,还可以让地图更加真实、互动。感谢你的提问。 ### 回答2: ArcGIS API for JS是一款广泛使用的地理信息系统软件开发工具,它提供了许多用于绘制地图元素的功能和工具。其中,绘制线和面是GIS应用程序中不可或缺的功能之一。 绘制线和面的方法都可以通过使用ArcGIS API for JS中提供的绘制工具实现。绘图工具可以通过调用API中提供的函数来启用并配置,然后就可以使用鼠标在地图中绘制所需图形。同时,API还提供了一系列函数用于处理网格、吸附、编辑和交互等操作,使绘制过程更加灵活、高效。 在ArcGIS API for JS中绘制非常简单,首先需要创建一个图形对象,然后指定该的坐标和样式。接着,将该对象添加到地图中即可。绘制线和面的方法与绘制类似,但需要传入更多的参数来指定线和面的形状、样式和颜色等属性。 总之,ArcGIS API for JS提供了丰富的图形绘制功能,能够轻松地绘制出各种类型的线和面,以满足GIS应用开发者的需求。具体实现方法可以参考API文档中提供的详细指南和示例代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值