在Arcgis JavaScript Api中,可以使用Graphic类和Feature Layer类来实现特效和混合功能的高亮特征。
下面是一个使用Feature Layer类来高亮选定区域的示例代码:
var highlightSymbol = {
"color": [255,255,0,128],
"outline": {
"color": [255,0,0,255],
"width": 1,
"type": "esriSLS",
"style": "esriSLSSolid"
},
"type": "esriSFS",
"style": "esriSFSForwardDiagonal"
};
var featureLayer = new FeatureLayer("https://sampleserver6.arcgisonline.com/arcgis/rest/services/Census/MapServer/3", {
mode: FeatureLayer.MODE_SNAPSHOT,
outFields: ["*"]
});
map.addLayer(featureLayer);
var highlightGraphics = [];
on(element, "click", function(evt){
featureLayer.clearSelection();
highlightGraphics = [];
var query = new Query();
query.geometry = pointToExtent(map, evt.mapPoint, 10);
var deferred = featureLayer.selectFeatures(query, FeatureLayer.SELECTION_NEW);
deferred.then(function(selection){
arrayUtils.forEach(selection, function(feature){
feature.setSymbol(highlightSymbol);
highlightGraphics.push(feature);
});
});
});
on(element, "mousemove", function(evt){
var highlight = false;
arrayUtils.forEach(highlightGraphics, function(graphic){
graphic.setSymbol(highlightSymbol);
if(graphic.geometry.contains(evt.mapPoint)){
highlight = true;
}
});
map.setMapCursor(highlight ? "pointer": "default");
});
这段代码首先定义了一个highlightSymbol变量,它包括一个颜色(黄色与半透明),轮廓线条(红色)和样式(斜线填充)。
接下来,我们创建一个Feature Layer类的实例,并将其添加到地图上。然后我们定义了一个空数组highlightGraphics来保存高亮