检查一下:<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>添加地图小部件</title>
<link rel="stylesheet" href="https://js.arcgis.com/3.45/esri/css/esri.css">
<script src="https://js.arcgis.com/3.45/init.js"></script>
<style>
html, body, #mapDiv {
padding: 0;
margin: 0;
width: 100%;
height: 100%;
}
</style>
<script>
/*在arcgis api for javascript中,提供了一个类叫做esri/toolbars/navigation,
通过这个类,用户可以实现对地图的基本操作。
*/
require([
"esri/map",
"esri/layers/ArcGISDynamicMapServiceLayer",
"esri/dijit/Scalebar",
"esri/symbols/SimpleMarkerSymbol",
"esri/toolbars/draw",
"esri/graphic",
"esri/layers/GraphicsLayer",
"esri/Color",
],
function(Map,
ArcGISDynamicMapServiceLayer,
Scalebar,
SimpleMarkerSymbol,
Draw,
Graphic,
GraphicsLayer,
Color
) {
var map = new Map("mapDiv", {
center: [-95.625,39.243],
zoom:2,
basemap: "hybrid" ,
isPan:false,//禁止平移
});
//调用动态地图服务
var layer = new ArcGISDynamicMapServiceLayer(
"https://sampleserver6.arcgisonline.com/arcgis/rest/services/USA/MapServer",{
"opacity": 0.75
})
map.addLayer(layer) ;
//添加比例尺
var scalebar = new Scalebar({
map: map,// 参考底图,必选项
attachTo: "bottom-left", // 指定比例尺在地图上的位置
scalebarStyle:"line",// 比例尺类型,比例尺以线性显示
scalebarUnit: "english",// 比例尺单位
});
// 声明一个draw工具条
var toolBar = new Draw(map);
// 绑定激活绘图工具的函数
function activate_tool() {
// 根据class获取所有按钮
var btns = document.getElementsByClassName('btn-info');
console.log('btns',btns)
for(var i = 0; i < btns.length; ++ i) {
var type = btns[i].getAttribute('aria-label');
// 绘制点
if (type === "POINT") {
btns[i].onclick = function() {
toolBar.activate(Draw.POINT)
};
// 结束绘制
} else if (type === "disabledraw") {
btns[i].onclick = function() {
toolBar.deactivate();
}
}
}};
// 调用函数
activate_tool();
// 为声明的draw工具添加了一个draw-complete事件,绘图结束后将图形显示在地图上
toolBar.on("draw-complete", drawEndEvent)
function drawEndEvent(evt) {
var geometry=evt.geometry;
console.log("geometry",geometry)
var type=geometry.type;
console.log("type",type)
// 创建点符号
var pointSymbol = new SimpleMarkerSymbol(
SimpleMarkerSymbol.STYLE_TRIANGLE,//点的形状
20,//点的大小
new SimpleLineSymbol(SimpleLineSymbol.STYLE_SOLID,new Color([255,0,0]), 1),//轮廓线的样式
new Color([0,255,0,0.25])//点的颜色
);
// 添加图形到地图
if (type === "point") {
var graphic=new Graphic(geometry,pointSymbol);
}
var graphicslayer=new GraphicsLayer();
graphicslayer.add(graphic);
map.addLayer(graphicslayer);
}
});
</script>
</head>
<body>
<button class='btn-info' aria-label="POINT">点</button>
<button class='btn-info' aria-label="disabledraw">结束绘制</button>
<div id="mapDiv"></div>
</body>
</html>