CSS:
.menucontent{
padding-top:10px;
background-color:#fff;
width:150px;
margin-bottom:20px;
border-radius:3px;
border:1px solid #8c7d7d;
box-shadow:#666 2px 2px 4px;
}
.menu-item{
line-height:25px;
font-size:15px;
padding-left:15px;
color:#000;
}
.menu-item:hover{
background-color:#e2e2e2b3;
}
JS:
/**图层编辑鼠标右键点击事件*/
function mapOfOnMouse(){
require([
"esri/geometry/Point",
"esri/toolbars/edit",
"esri/symbols/SimpleMarkerSymbol",
"esri/graphic",
"esri/InfoTemplate",
"dijit/Menu",
"dijit/MenuItem",
"dijit/MenuSeparator",],
function(Point,Edit, SimpleMarkerSymbol, Graphic, InfoTemplate, Menu, MenuItem, MenuSeparator){
var layerid="buffoksLayer";
var bufflayer=map.getLayer(layerid);
if(!bufflayer){//创建图层
bufflayer = new esri.layers.GraphicsLayer();
bufflayer.id=layerid;
map.addLayer(bufflayer);//添加缓冲区几何图层到缓冲区图层上
}
var ctxMenuForGraphics;
$("#map").oncontextmenu=function(e){
e.preventDefault();
}
dojo.connect(bufflayer, "onMouseDown", function(evt) {
if(evt.which==3 || evt.button==2){
params.menuGraphic=evt.graphic;
//是鼠标右键
ctxMenuForGraphics=new Menu({});
createGraphicsMenu(evt);
ctxMenuForGraphics.bindDomNode(evt.graphic.getDojoShape().getNode());
}
});
function createGraphicsMenu(e) {
ctxMenuForGraphics.addChild(new MenuItem({
label: '<div class="menucontent"><div class="menu-item" name="删除">删除</div></div>'
+'<div class="menucontent"><div class="menu-item" name="移动">移动</div></div>'
+'<div class="menucontent"><div class="menu-item" name="拉伸">拉伸</div></div>'
+'<div class="menucontent"><div class="menu-item" name="旋转">旋转</div></div>'
+'<div class="menucontent"><div class="menu-item" name="编辑">编辑</div></div>',
onClick: function (e) {
var name=$(e.target).attr("name");
var gtype=params.menuGraphic.geometry.type;
if(gtype=="point" && name != "删除" && name != "移动"){
return false; //图片图形和文本图形皆不能做其它操作,容易出错
}
require(["esri/toolbars/edit"], function ( Edit) {
var edit = new Edit(map);
switch(name){
case "删除": //删除图形
var bufflayer=map.getLayer("buffoksLayer");
bufflayer.remove(params.menuGraphic);
break;
case "移动": //激活Edit工具(移动)
edit.activate(Edit.MOVE,params.menuGraphic);
alert("鼠标拖拽图形进行移动,单击地图结束移动!");
break;
case "拉伸": //激活Edit工具(拉伸客户端图形)
//构建Edit参数 注:拉伸的时候,可以指定是否保持长宽比例
var options = {
uniformScaling:true
};
edit.activate(Edit.SCALE,params.menuGraphic,options);
break;
case "旋转": //激活Edit工具(旋转客户端图形)
edit.activate(Edit.ROTATE,params.menuGraphic);
break;
case "编辑": //构建Edit参数
//注:编辑折点的时候,要指定是否能添加或者删除结点。
var options = {
allowAddVertices:true,//能添加结点
allowDeleteVertices: true//能删除结点
};
edit.activate(Edit.EDIT_VERTICES, params.menuGraphic, options);
break;
}
var yiDong=map.on("click", function () {
edit.deactivate();
yiDong.remove();
alert("已结束编辑!");
})
});
}
}));
ctxMenuForGraphics.startup();
}
});
}