Javascript 如何在ArcGIS JS API 3.x中通过鼠标点击事件选择多个功能

Javascript 如何在ArcGIS JS API 3.x中通过鼠标点击事件选择多个功能,javascript,mouseevent,arcgis,esri,arcgis-js-api,Javascript,Mouseevent,Arcgis,Esri,Arcgis Js Api,我试图通过使用“按住ctrl键并单击鼠标事件”在要素图层中选择多个要素。我使用的是ArcGIS JS API 3.x 我已经使用FeatureCollection创建了美国州边界FeatureLayer,并能够在地图上显示该层。用户希望在按住“ctrl”或“alt”键的同时通过鼠标单击选择多个状态 var featureLayer = new esri.layers.FeatureLayer(featureCollection, { id: stateLayer, opacity

我试图通过使用“按住ctrl键并单击鼠标事件”在要素图层中选择多个要素。我使用的是ArcGIS JS API 3.x

我已经使用FeatureCollection创建了美国州边界FeatureLayer,并能够在地图上显示该层。用户希望在按住“ctrl”或“alt”键的同时通过鼠标单击选择多个状态

var featureLayer = new esri.layers.FeatureLayer(featureCollection, {
    id: stateLayer,
    opacity: 0.30,
    visible: true,
    infoTemplate: infoTemplate
});
g_esri.map.addLayer(featureLayer);
featureLayer.on("click", onBoundaryClick);

function onBoundaryClick(evt) {
    var g = evt.graphic;
    g_esri.map.infoWindow.setContent(g.getContent());
    g_esri.map.infoWindow.show(evt.screenPoint, g_esri.map.getInfoWindowAnchor(evt.screenPoint));
    formatInfotemplate(false, g);
}
我试着跟随下面的一些链接

a

b


但是无法通过,

我很久没有使用3.xx API了。不管怎样,也许我为你做的这个例子可以帮助你。其基本思想是在要素层上侦听单击事件以捕获选定的图形,然后添加到选定的集合中。添加时,只需检查是否按下了所需键


标签功能客户端
html,body,#map{
高度:100%;宽度:100%;边距:0;填充:0;
}
var映射;
要求([
“esri/map”,
“esri/几何体/范围”,
“esri/图层/功能图层”,
“esri/layers/GraphicsLayer”,
“esri/symbols/SimpleLineSymbol”,
“esri/symbols/SimpleFillSymbol”,
“esri/渲染器/简单渲染器”,
“esri/Color”,
“dojo/domReady!”
],函数(地图、范围、功能层、GraphicsLayer、,
SimpleLineSymbol,SimpleFillSymbol,
简化程序(颜色)
{
const bbox=新范围({“xmin”:-1940058,“ymin”:-814715,“xmax”:1683105,“ymax”:1446096,“空间参考”:{“wkid”:102003});
常量映射=新映射(“映射”{
范围:bbox
});
const statesUrl=”https://sampleserver6.arcgisonline.com/arcgis/rest/services/Census/MapServer/3";
const states=新功能层(statesUrl{
id:“国家”,
外场:[“*”]
});
添加图层(状态);
常量颜色=新颜色(“00ffff”);
const line=新的SimpleLineSymbol(“实体”,颜色,1.5);
const symbol=新的SimpleFillSymbol(“实线”,直线,空);
常量渲染器=新的简化渲染器(符号);
const selected=new GraphicsLayer();
selected.setRenderer(渲染器);
map.addLayer(选中);
设ctrl=false;
让shift=false;
地图打开(“按键按下”,功能(evt){
如果(evt.key==“控制”){
ctrl=true;
}否则如果(evt.key==“Shift”){
移位=真;
}
});
地图打开(“向上键”,功能(evt){
如果(evt.key==“控制”){
ctrl=false;
}否则如果(evt.key==“Shift”){
移位=假;
}
});
状态。打开(“单击”,功能(evt){
如果(!ctrl&&!shift){
选中。清除();
}
selected.add(evt.graphic.clone());
log(`Selected:${Selected.graphics.length}`);
});
});