今天总算敲定实习的事,也不知道未来等待我的将是什么,但是我知道我既然选择了就要把它做好,选择就不要后悔,走下去====开车开车
一、实现的思路
首先声明一个GraphicLayer的图层,(该图层是客户端类型图层,与ArcGIS Server发布的图层没有任何联系,绘画的对象也在客户端完成)然后生命工具类 Draw,根据点选的不同进行绘画,然后将绘画的图形进行渲染即可。
二、HTML布局
点击你所要绘画的图形
三、主要的代码
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));
}
四、总结
代码很简单,但是这是一个ArcGIS API For JS 最基本的应用