The cache is used to store values computed from geometries that need to cleared or recomputed upon mutation. An example is the extent of a polygon. The default value is undefined
. (Added at v3.13)
Sample:
var map;
require([
"esri/InfoTemplate",
"esri/layers/FeatureLayer",
"esri/map",
"esri/tasks/query", "dojo/domReady!"
], function (InfoTemplate, FeatureLayer, Map, Query){
map = new Map("map", {
basemap: "topo-vector",
center: [-122.45, 37.75], // longitude, latitude
zoom: 9
});
var infoTemplate = new InfoTemplate("Attributes", "${*}");
var countiesFeatureLayer = new FeatureLayer("http://sampleserver6.arcgisonline.com/arcgis/rest/services/USA/MapServer/3",
{
mode: FeatureLayer.MODE_ONDEMAND,
infoTemplate: infoTemplate,
outFields: ['*']
});
var highwaysFeatureLayer = new FeatureLayer("http://sampleserver6.arcgisonline.com/arcgis/rest/services/USA/MapServer/1",
{
mode: FeatureLayer.MODE_ONDEMAND,
infoTemplate: infoTemplate,
outFields: ['*']
});
map.on("load", function (){
map.addLayer(countiesFeatureLayer);
map.addLayer(highwaysFeatureLayer);
var query = new Query();
query.geometry = map.extent;
query.spatialRelationship = Query.SPATIAL_REL_ENVELOPEINTERSECTS;
query.returnGeometry = true;
query.outFields = ["*"];
countiesFeatureLayer.queryFeatures(query, function (featureSet){
var polygon = featureSet.features[0].geometry;
// populate the Geometry cache by calling getExtent()
var polygonExtent = polygon.getExtent();
console.log("polygonExtent", polygonExtent);
console.log("polygon.cache._extent", polygon.cache._extent);
for (var i = 0; i < featureSet.features.length; i ) {
var feature = featureSet.features[i];
console.log("Polygon geometry cache, %o", feature.geometry.cache);
feature.geometry.clearCache();
console.log("Polygon geometry clear cache, %o", feature.geometry.cache);
// Break out of the loop after the first result
break;
}
});
highwaysFeatureLayer.queryFeatures(query, function (featureSet){
var line = featureSet.features[0].geometry;
// populate the Geometry cache by calling getExtent()
var lineExtent = line.getExtent();
console.log("lineExtent", lineExtent);
console.log("line.cache._extent", line.cache._extent);
for (var i = 0; i < featureSet.features.length; i ) {
var feature = featureSet.features[i];
console.log("Line geometry cache, %o", feature.geometry.cache);
feature.geometry.clearCache();
console.log("Line geometry clear cache, %o", feature.geometry.cache);
// Break out of the loop after the first result
break;
}
});
});
});