<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html> <head> <title>Dynamic Layer</title> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=7,IE=9" /> <link rel="stylesheet" type="text/css" href="http://serverapi.arcgisonline.com/jsapi/arcgis/3.2/js/dojo/dijit/themes/claro/claro.css"> <link rel="stylesheet" type="text/css" href="http://serverapi.arcgisonline.com/jsapi/arcgis/3.2/js/esri/css/esri.css" /> <script type="text/javascript">dojoConfig = { parseOnLoad: true };</script> <script type="text/javascript" src="http://serverapi.arcgisonline.com/jsapi/arcgis/?v=3.2"></script> <style> html, body, #mapDiv, .map.container { padding:0; margin:0; height:100%; } </style> <script type="text/javascript"> dojo.require("esri.map"); dojo.require("esri.layers.FeatureLayer"); var map, featureLayer; function init() { esri.config.defaults.geometryService = new esri.tasks.GeometryService("http://tasks.arcgisonline.com/ArcGIS/rest/services/Geometry/GeometryServer"); var initialExtent = new esri.geometry.Extent({ "xmin": -167.3, "ymin": -69.59, "xmax": 160.32, "ymax": 71.91, "spatialReference": { "wkid": 4326 } }); map = new esri.Map("mapDiv", { wrapAround180: true, extent: esri.geometry.geographicToWebMercator(initialExtent) }); dojo.connect(map, 'onLoad', initOperationalLayer); //Add the World Imagery service as a basemap to the map var basemap = new esri.layers.ArcGISTiledMapServiceLayer("http://server.arcgisonline.com/ArcGIS/rest/services/World_Imagery/MapServer"); map.addLayer(basemap); } function initOperationalLayer(map) { var content = "<b>Name</b>: ${NAME}" + "<br /><b>Area</b>: ${ss6.gdb.Lakes.AREA:NumberFormat(places:0)}"; var infoTemplate = new esri.InfoTemplate("Dynamic Layer", content); //define the layer's data source from a table var dataSource = new esri.layers.TableDataSource(); dataSource.workspaceId = "MyDatabaseWorkspaceIDSSR2"; dataSource.dataSourceName = "ss6.gdb.Lakes"; var layerSource = new esri.layers.LayerDataSource(); layerSource.dataSource = dataSource; //create a new feature layer based on the table data source featureLayer = new esri.layers.FeatureLayer('http://sampleserver6.arcgisonline.com/arcgis/rest/services/USA/MapServer/dynamicLayer', { mode: esri.layers.FeatureLayer.MODE_ONDEMAND, outFields: ["*"], infoTemplate: infoTemplate, source: layerSource }); dojo.connect(featureLayer, "onLoad", function (layer) { //project the extent if the map's spatial reference is different that the layer's extent. var gs = esri.config.defaults.geometryService; var extent = layer.fullExtent; if (extent.spatialReference.wkid === map.spatialReference.wkid) { map.setExtent(extent); } else { gs.project([extent], map.spatialReference).then(function (results) { map.setExtent(results[0]); }); } }); var renderer = new esri.renderer.SimpleRenderer( new esri.symbol.SimpleFillSymbol("solid", null, new dojo.Color([255, 0, 255, 0.75]) // fuschia lakes! )); featureLayer.setRenderer(renderer); map.addLayer(featureLayer); map.infoWindow.resize(150, 105); dojo.connect(window, 'resize', map, map.resize); } dojo.addOnLoad(init); function removeFeatureLayer() { map.removeLayer(featureLayer); } function removeFeatureLayer2() { console.log(">>>>>>>>>>>>>>> GL count: " + map.graphicsLayerIds.length); for (var j = 0, jl = map.graphicsLayerIds.length; j < jl; j++) { var currentGraphicsLayer = map.getLayer(map.graphicsLayerIds); //console.log("Graphics Layer ID: " + currentGraphicsLayer.id); map.removeLayer(currentGraphicsLayer); } } </script> </head> <body class='claro'> <div id="mapDiv"></div> <input type="button" value="Remove Feature Layer" style="position:absolute;bottom:40px;left:10px;" onclick="removeFeatureLayer()" /> <input type="button" value="Remove Feature Layer 2" style="position:absolute;bottom:10px;left:10px;" onclick="removeFeatureLayer2()" /> </body> </html>
I think you may have indirectly changed the referenced layer
// dojo.connect(hvaFeatureLayer, "onUpdateStart", function () { // hvaFeatureLayer.id = hvaFeatureLayer.name; // });
Haven't had time to think this through fully though...
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html> <head> <title>Dynamic Layer</title> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=7,IE=9" /> <link rel="stylesheet" type="text/css" href="http://serverapi.arcgisonline.com/jsapi/arcgis/3.2/js/dojo/dijit/themes/claro/claro.css"> <link rel="stylesheet" type="text/css" href="http://serverapi.arcgisonline.com/jsapi/arcgis/3.2/js/esri/css/esri.css" /> <script type="text/javascript">dojoConfig = { parseOnLoad: true };</script> <script type="text/javascript" src="http://serverapi.arcgisonline.com/jsapi/arcgis/?v=3.2"></script> <style> html, body, #mapDiv, .map.container { padding:0; margin:0; height:100%; } </style> <script type="text/javascript"> dojo.require("esri.map"); dojo.require("esri.layers.FeatureLayer"); var map, featureLayer; function init() { esri.config.defaults.geometryService = new esri.tasks.GeometryService("http://tasks.arcgisonline.com/ArcGIS/rest/services/Geometry/GeometryServer"); var initialExtent = new esri.geometry.Extent({ "xmin": -167.3, "ymin": -69.59, "xmax": 160.32, "ymax": 71.91, "spatialReference": { "wkid": 4326 } }); map = new esri.Map("mapDiv", { wrapAround180: true, extent: esri.geometry.geographicToWebMercator(initialExtent) }); dojo.connect(map, 'onLoad', initOperationalLayer); //Add the World Imagery service as a basemap to the map var basemap = new esri.layers.ArcGISTiledMapServiceLayer("http://server.arcgisonline.com/ArcGIS/rest/services/World_Imagery/MapServer"); map.addLayer(basemap); } function initOperationalLayer() { var content = "<b>Name</b>: ${NAME}" + "<br /><b>Area</b>: ${ss6.gdb.Lakes.AREA:NumberFormat(places:0)}"; var infoTemplate = new esri.InfoTemplate("Dynamic Layer", content); //define the layer's data source from a table var dataSource = new esri.layers.TableDataSource(); dataSource.workspaceId = "MyDatabaseWorkspaceIDSSR2"; dataSource.dataSourceName = "ss6.gdb.Lakes"; var layerSource = new esri.layers.LayerDataSource(); layerSource.dataSource = dataSource; //create a new feature layer based on the table data source featureLayer = new esri.layers.FeatureLayer('http://sampleserver6.arcgisonline.com/arcgis/rest/services/USA/MapServer/dynamicLayer', { mode: esri.layers.FeatureLayer.MODE_ONDEMAND, outFields: ["*"], infoTemplate: infoTemplate, source: layerSource }); dojo.connect(featureLayer, "onLoad", function (layer) { //project the extent if the map's spatial reference is different that the layer's extent. var gs = esri.config.defaults.geometryService; var extent = layer.fullExtent; if (extent.spatialReference.wkid === map.spatialReference.wkid) { map.setExtent(extent); } else { gs.project([extent], map.spatialReference).then(function (results) { map.setExtent(results[0]); }); } }); var renderer = new esri.renderer.SimpleRenderer( new esri.symbol.SimpleFillSymbol("solid", null, new dojo.Color([255, 0, 255, 0.75]) // fuschia lakes! )); featureLayer.setRenderer(renderer); map.addLayer(featureLayer); map.infoWindow.resize(150, 105); dojo.connect(window, 'resize', map, map.resize); } dojo.addOnLoad(init); function removeFeatureLayer() { initOperationalLayer(); //Simulates the new layer call in your code map.removeLayer(featureLayer); } function removeFeatureLayer2() { initOperationalLayer(); //Simulates the new layer call in your code console.log(">>>>>>>>>>>>>>> GL count: " + map.graphicsLayerIds.length); for (var j = 0, jl = map.graphicsLayerIds.length; j < jl; j++) { var currentGraphicsLayer = map.getLayer(map.graphicsLayerIds); //console.log("Graphics Layer ID: " + currentGraphicsLayer.id); map.removeLayer(currentGraphicsLayer); } } </script> </head> <body class='claro'> <div id="mapDiv"></div> <input type="button" value="Remove Feature Layer" style="position:absolute;bottom:40px;left:10px;" onclick="removeFeatureLayer()" /> <input type="button" value="Remove Feature Layer 2" style="position:absolute;bottom:10px;left:10px;" onclick="removeFeatureLayer2()" /> </body> </html>
function createFL(layerid) { hvaFeatureLayer = new esri.layers.FeatureLayer("<mapserver url>/" + layerid, { mode: esri.layers.FeatureLayer.MODE_ONDEMAND, outFields: ["*"] }); hvaFeatureLayer.setRenderer(getRenderer("Stoplight")); //custom green, yellow, red indicators AddLayersToMap(); }
function AddLayersToMap() { //if current graphics layer exists, call graphics layer function to get layer and remove it if (map.graphicsLayerIds.length >= 1) { getMapGraphicsLayers(); } map.addLayer(hvaFeatureLayer); dojo.connect(hvaFeatureLayer, "onUpdateStart", function () { hvaFeatureLayer.id = hvaFeatureLayer.name; }); //event listener for when user clicks on map dojo.connect(map, "onClick", executeSelectQueryTask); dojo.connect(hvaFeatureLayer, "onMouseOver", function (evt) { var t = "${LPHA_TRIBE_NAME}"; var content = esri.substitute(evt.graphic.attributes, t); dialog.setContent(content); dojo.style(dialog.domNode, "opacity", 1); dijit.popup.open({ popup: dialog, x: evt.pageX, y: evt.pageY }); }); //close the dialog when the mouse leaves the highlight graphic dojo.connect(map, "onLoad", function () { map.graphics.enableMouseEvents(); dojo.connect(map.graphics, "onMouseOut", closeDialog); }); }
function getMapGraphicsLayers() { console.log(">>>>>>>>>>>>>>> GL count: " + map.graphicsLayerIds.length); for (var j = 0, jl = map.graphicsLayerIds.length; j < jl; j++) { var currentGraphicsLayer = map.getLayer(map.graphicsLayerIds); //console.log("Graphics Layer ID: " + currentGraphicsLayer.id); map.removeLayer(currentGraphicsLayer); } }
function changeHaz(value) { //if (hvaFeatureLayer){ // map.removeLayer(hvaFeatureLayer); //} //alert(value.substring(0,value.length-1)); layerid = getIdFromMapService($.trim(value)); createFL(layerid); }
Aangemelde leden kunnen berichten plaatsen, updates volgen en meer. Nieuw hier? Registreer een gratis account.
Find useful guides, FAQs, and documents to help you navigate and make the most of Esri Community.