Below is my code that I have been tinkering with, however, I can't seem to figure how to remove highlighting from my 3D buildings. Not sure how to go about it.
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="initial-scale=1,maximum-scale=1,user-scalable=no">
<title>Intro to SceneLayer - 4.10</title>
<style>
html,
body,
#viewDiv {
padding: 0;
margin: 0;
height: 100%;
width: 100%;
}
</style>
<link rel="stylesheet" href="https://js.arcgis.com/4.10/esri/css/main.css">
<script src="https://js.arcgis.com/4.10/"></script>
<script>
require([
"esri/Map",
"esri/views/SceneView",
"esri/layers/SceneLayer"
], function(Map, SceneView, SceneLayer) {
// Create Map
var map = new Map({
basemap: "dark-gray",
ground: "world-elevation"
});
// Create the SceneView
var view = new SceneView({
container: "viewDiv",
map: map,
camera: {
position: [-80.196073,25.792461, 707],
tilt: 81,
heading: 50
}
});
// Create SceneLayer and add to the map
var sceneLayer = new SceneLayer({
portalItem: {
id: "b162d491955744ff9e9de7913bb49693 "
},
popupEnabled: false
});
map.add(sceneLayer);
// Create MeshSymbol3D for symbolizing SceneLayer
var symbol = {
type: "mesh-3d", // autocasts as new MeshSymbol3D()
symbolLayers: [{
type: "fill", // autocasts as new FillSymbol3DLayer()
// If the value of material is not assigned, the default color will be grey
material: {
color: [244, 247, 134]
}
}]
};
view.on("pointer-move", function(event){
view.hitTest(event).then(function(response){
let highlight;
if (response.results[0]) {
var graphic = response.results[0].graphic;
view.whenLayerView(graphic.layer).then(function(layerView){
highlight = layerView.highlight(graphic);
})
}
})
});
// Add the renderer to sceneLayer
sceneLayer.renderer = {
type: "simple", // autocasts as new SimpleRenderer()
symbol: symbol
};
});
</script>
</head>
<body>
<div id="viewDiv"></div>
</body>
</html>
Check out the pointer-move listener on line 65, those functions/callbacks are where your highlight is applied.
Hi Jeremy Singh,
I couldn't get your code to work as its throwing error for invalid Portal ID.
However what I see missing is for you to add:
if (highlight) {
highlight.remove();
}
That should do the trick.