|
POST
|
I have 3 questions: 1- when layers are off in map service and load in web page the tools can't show any features of map( map is empty or blank) !! why? what should I do? 2- How can I add 2 or more map services? 3- Is it possible add tiled map service like flex?
... View more
12-02-2017
10:35 PM
|
0
|
19
|
1661
|
|
POST
|
Hi I,m going to add dynamic layer over basemap by bellow sample code, but there is a bug in my code! what is wrong? plese help me... <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <meta name="viewport" content="initial-scale=1, maximum-scale=1,user-scalable=yes"> <title>Map</title> <link rel="stylesheet" href="https://js.arcgis.com/3.22/dijit/themes/claro/claro.css"> <link rel="stylesheet" href="https://js.arcgis.com/3.22/dijit/themes/tundra/tundra.css"> <link rel="stylesheet" href="https://js.arcgis.com/3.22/esri/css/esri.css"> <style> html, body { height: 100%; width: 100%; margin: 0%; font-family:Mitra; } #map { border: solid 1px #B5BCC7; padding: 0; font-family:Mitra; } #paneHeader { background-color: #ffffff; color: white; text-align: center; height: 30px; margin: 0; overflow: hidden; font-size: 16px; padding: 8px 5px; font-family:Mitra; } #rightPane { width: 150px; margin: 0; padding: 0; font-family:Mitra; font-size: 13px; } #HomeButton { position: absolute; top: 95px; left: 20px; z-index: 50; } #bufferDialogBtn { float: right; } .nonModal_underlay { display: none; } h3 { margin: 0 0 5px 0; border-bottom: 1px solid #444; } .shadow { box-shadow: 0 0 5px #888; } #feedback { background: #fff; color: #444; position: absolute; font-family: arial; height: 300px; left: 30px; margin: 5px; padding: 10px; top: 30px; width: 300px; z-index: 40; } #note, #hint { font-size: 80%; } #note { font-weight: 700; padding: 0 0 10px 0; } #layerList { width: 200px; } .dojoDndItemOver { background: #ccc; } </style> <script src="https://js.arcgis.com/3.22/"></script> <script> var map; require([ "dojo/dom", "esri/Color", "dojo/keys", "dojo/parser", "esri/config", "esri/sniff", "esri/map", "esri/SnappingManager", "esri/dijit/Measurement", "esri/layers/FeatureLayer", "esri/renderers/SimpleRenderer", "esri/tasks/GeometryService", "esri/symbols/SimpleLineSymbol", "esri/symbols/SimpleFillSymbol", "esri/dijit/Scalebar", "esri/dijit/BasemapGallery", "esri/dijit/BasemapLayer", "esri/dijit/Basemap", "esri/dijit/OverviewMap", "esri/tasks/locator", "esri/dijit/Search", "esri/symbols/PictureMarkerSymbol", "esri/InfoTemplate", "esri/dijit/HomeButton", "esri/geometry/Extent", "esri/SpatialReference", "esri/dijit/VisibleScaleRangeSlider", "esri/geometry/scaleUtils", "esri/virtualearth/VETiledLayer", "dijit/form/Button", "esri/tasks/query", "esri/geometry/Circle", "esri/graphic", "esri/symbols/SimpleMarkerSymbol", "dojo/on", "esri/toolbars/draw", "esri/units", "esri/layers/ArcGISDynamicMapServiceLayer", "esri/layers/DynamicLayerInfo", "esri/layers/LayerDataSource", "esri/layers/LayerDrawingOptions", "esri/layers/TableDataSource", "dojo/dom", "dojo/dom-construct", "dojo/dom-style", "dojo/query", "dojo/_base/array", "dojo/dnd/Source", "dijit/registry", "dijit/form/Button", "dijit/layout/BorderContainer", "dijit/layout/ContentPane", "dijit/TitlePane", "dijit/Dialog", "dojo/domReady!" ], function( dom, Color, keys, parser, esriConfig, has, Map, SnappingManager, Measurement, FeatureLayer, SimpleRenderer, GeometryService, SimpleLineSymbol, SimpleFillSymbol, Scalebar, BasemapGallery, BasemapLayer, Basemap, OverviewMap, Locator, Search, PictureMarkerSymbol, InfoTemplate, HomeButton, Extent, SpatialReference, VisibleScaleRangeSlider, scaleUtils, VETiledLayer, Button, Query, Circle, Graphic, SimpleMarkerSymbol, on, Draw, units, ArcGISDynamicMapServiceLayer, DynamicLayerInfo, LayerDataSource, LayerDrawingOptions, TableDataSource, domConstruct, domStyle, query, arrayUtils, Source, registry ) { parser.parse(); esriConfig.defaults.io.proxyUrl = "/proxy/"; esriConfig.defaults.io.alwaysUseProxy = false; esriConfig.defaults.geometryService = new GeometryService("https://sampleserver1.arcgisonline.com/ArcGIS/rest/services/Geometry/GeometryServer"); map = new Map("map"); var basemaps = []; var waterTemplateLayer = new BasemapLayer({ url: "https://sampleserver1.arcgisonline.com/ArcGIS/rest/services/WaterTemplate/LocalGovernmentInfrastructureBasemap/MapServer" }); var waterBasemap = new Basemap({ layers: [waterTemplateLayer], title: "Water Template", thumbnailUrl: "images/waterThumb.png" }); basemaps.push(waterBasemap); var publicSafetyLayer = new BasemapLayer({ url: "https://sampleserver1.arcgisonline.com/ArcGIS/rest/services/PublicSafety/PublicSafetyBasemap/MapServer" }); var publicSafetyBasemap = new Basemap({ layers: [publicSafetyLayer], title: "Public Safety", thumbnailUrl: "images/safetyThumb.png" }); basemaps.push(publicSafetyBasemap); var basemapGallery = new BasemapGallery({ showArcGISBasemaps: false, basemaps: basemaps, map: map }, "basemapGallery"); basemapGallery.startup(); basemapGallery.on("error", function(error) { console.log(error); }); var scalebar = new Scalebar({ map: map, // "dual" displays both miles and kilometers // "english" is the default, which displays miles // use "metric" for kilometers scalebarUnit: "dual" }); var dynamicLayerInfos; var dndSource = new Source("layerList"); dndSource.on("DndDrop", reorderLayers); usaLayer = new ArcGISDynamicMapServiceLayer("https://sampleserver6.arcgisonline.com/arcgis/rest/services/USA/MapServer", { "id": "usa" }); usaLayer.on("load", function (e) { dynamicLayerInfos = e.target.createDynamicLayerInfosFromLayerInfos(); arrayUtils.forEach(dynamicLayerInfos, function (info) { var i = { id: info.id, name: info.name, position: info.id }; if (arrayUtils.indexOf(usaLayer.visibleLayers, info.id) > -1) { i.visible = true; } else { i.visible = false; } infos[info.id] = i; }); infos.total = dynamicLayerInfos.length; e.target.setDynamicLayerInfos(dynamicLayerInfos, true); }); // only create the layer list the first time update-end fires on.once(usaLayer, "update-end", buildLayerList); map.addLayer(usaLayer); // add the lakes layer to the existing map service registry.byId("lakes").on("click", addLakes); function buildLayerList() { dndSource.clearItems(); domConstruct.empty(dom.byId("layerList")); var layerNames = []; for (var info in infos) { if (!infos[info].hasOwnProperty("id")) { continue; } // only want the layer's name, don't need the db name and owner name var nameParts = infos[info].name.split("."); var layerName = nameParts[nameParts.length - 1]; var layerDiv = createToggle(layerName, infos[info].visible); layerNames[infos[info].position] = layerDiv; } dndSource.insertNodes(false, layerNames); } function toggleLayer(e) { for (var info in infos) { var i = infos[info]; if (i.name === e.target.name) { i.visible = !i.visible; } } var visible = getVisibleLayers(); if (visible.length === 0) { usaLayer.setVisibleLayers([-1]); } else { usaLayer.setDynamicLayerInfos(visible); } } function reorderLayers() { var newOrder = getVisibleLayers(); usaLayer.setDynamicLayerInfos(newOrder); } function addLakes() { var lakes = "Lakes"; registry.byId(lakes.toLowerCase()).set("disabled", true); // update global object with layer info infos[infos.total] = { id: infos.total, name: lakes, position: infos.total, visible: true }; infos.total += 1; buildLayerList(); // layer name in the workspace var layerName = "ss6.gdb." + lakes; // create a new dynamic layer info object for the lakes layer var dynamicLayerInfo = new DynamicLayerInfo(); dynamicLayerInfo.id = dynamicLayerInfos.length; dynamicLayerInfo.name = layerName; // can also set things like min/max scale // create a table data source to access the lakes layer var dataSource = new TableDataSource(); dataSource.workspaceId = "MyDatabaseWorkspaceIDSSR2"; // not exposed via REST 😞 dataSource.dataSourceName = layerName; // and now a layer source var layerSource = new LayerDataSource(); layerSource.dataSource = dataSource; dynamicLayerInfo.source = layerSource; dynamicLayerInfos.push(dynamicLayerInfo); // set new infos, but don't refresh // map will be updated when the drawing options are set var layers = getVisibleLayers(); usaLayer.setDynamicLayerInfos(layers, true); var drawingOptions = new LayerDrawingOptions(); drawingOptions.renderer = new SimpleRenderer( new SimpleFillSymbol("solid", null, new Color([0, 150, 255, 1]) )); var options = []; options[4] = drawingOptions; usaLayer.setLayerDrawingOptions(options); } function getVisibleLayers() { // get layer name nodes, build an array corresponding to new layer order var layerOrder = []; query("#layerList .dojoDndItem label").forEach(function (n, idx) { for (var info in infos) { var i = infos[info]; if (i.name === n.innerHTML) { layerOrder[idx] = i.id; // keep track of a layer's position in the layer list i.position = idx; break; } } }); // find the layer IDs for visible layer var ids = arrayUtils.filter(layerOrder, function (l) { return infos .visible; }); // get the dynamicLayerInfos for visible layers var visible = arrayUtils.map(ids, function (id) { return dynamicLayerInfos[id]; }); return visible; } function createToggle(name, visible) { var div = domConstruct.create("div"); var layerVis = domConstruct.create("input", { checked: visible, id: name, name: name, type: "checkbox" }, div); on(layerVis, "click", toggleLayer); var layerSpan = domConstruct.create("label", { for: name, innerHTML: name }, div); return div; } }); </script> </head> <body class="claro"> <div data-dojo-type="dijit/layout/BorderContainer" data-dojo-props="design:'headline', gutters:true" style="width:100%;height:100%;"> <div id="map" data-dojo-type="dijit/layout/ContentPane" data-dojo-props="region:'center'"> <div id="feedback" class="shadow"> <h3>Add and Re-order Layers</h3> <div id="info"> <div id="note"> Note: This sample requires an ArcGIS Server version 10.1 or later map service. </div> <div id="hint"> Click and drag a map layer name below to re-order layers. The first layer in the list will be drawn on top. </div> <div><strong>Map Layers</strong></div> <div id="layerList"></div> <button id="lakes" data-dojo-type="dijit/form/Button"> Add Lakes </button> </div> </div> </div> <div data-dojo-type="dijit/layout/ContentPane" data-dojo-props="region:'right'" id="rightPane"> <div data-dojo-type="dijit/layout/BorderContainer" data-dojo-props="design:'headline', gutters:false" style="width:100%;height:100%;"> <div id="paneHeader" data-dojo-type="dijit/layout/ContentPane" data-dojo-props="region:'top'"> <span>Select Basemap</span> </div> <div data-dojo-type="dijit/layout/ContentPane" data-dojo-props="region:'center'"> <div id="basemapGallery"></div> </div> </div> </div> </div> </body> </html>
... View more
12-02-2017
04:01 AM
|
0
|
21
|
3328
|
|
POST
|
I solved proxy problem. but I don't know what is the meaning of:"Click to toggle each layer on or off"? because there in not toggle and... also the table is empty(image 2). this is preview of output: (image2):
... View more
11-28-2017
01:59 AM
|
0
|
1
|
1752
|
|
POST
|
Hi I think there is a bug in code. When buffer tools is open in page, user can not change units in measurement tools also can not insert text in search textbox!!
... View more
11-27-2017
11:52 PM
|
0
|
1
|
1066
|
|
POST
|
Hi I changed map service and feature service address to my localhost also css and js address, but sample dont work. should change in these lines?: esriConfig.defaults.io.proxyUrl = "proxy.ashx"; esriConfig.defaults.io.alwaysUseProxy = false; If yes, how? regards
... View more
11-27-2017
09:21 PM
|
0
|
0
|
1752
|
|
POST
|
I tested your code, but I think there is a bug in it and don't work for me!
... View more
11-27-2017
08:23 AM
|
0
|
6
|
1752
|
|
POST
|
I wrote a sample by html and js, I don't know more and don't know what should I do.
... View more
11-27-2017
07:21 AM
|
0
|
3
|
1066
|
|
POST
|
how can customize query buffer? I,m going to add a button for call query buffer function (like measurement tools), and a text area (textbox) for insert radius of buffer by client in web page.
... View more
11-26-2017
11:27 PM
|
0
|
5
|
1275
|
|
POST
|
Hi thanks a lot I have one more important problem, when I use query buffer in my code, I can not use measurement tools. because when I click for measurement, it return buffer! how can I add button for query buffer in js api like measurement tools, after select button each click start a query for buffer. Regards
... View more
11-26-2017
10:41 PM
|
0
|
0
|
678
|
|
POST
|
Hi I add query buffer to your sample code, but the map service can not show!!. If I remove map.addLayer(featureLayer); from code the map service load ok . please help me <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <meta name="viewport" content="initial-scale=1, maximum-scale=1,user-scalable=no"> <title>Display Multiple ArcGIS Online Services</title> <link rel="stylesheet" href="https://js.arcgis.com/3.22/dijit/themes/claro/claro.css"> <link rel="stylesheet" href="https://js.arcgis.com/3.22/esri/css/esri.css"> <style> html, body { height: 97%; width: 98%; margin: 1%; } #map { border: solid 1px #B5BCC7; padding: 0; } #paneHeader { background: url(images/header.png) repeat-x; color: white; border-bottom: solid 1px #B5BCC7; text-align: center; height: 30px; margin: 0; overflow: hidden; font-size: 16px; padding: 8px 5px; } #rightPane { width: 150px; margin: 0; padding: 0; } </style> <script src="https://js.arcgis.com/3.22/"></script> <script> var map; require([ "dojo/dom", "esri/Color", "dojo/keys", "dojo/parser", "esri/config", "esri/sniff", "esri/map", "esri/SnappingManager", "esri/dijit/Measurement", "esri/layers/FeatureLayer", "esri/renderers/SimpleRenderer", "esri/tasks/GeometryService", "esri/symbols/SimpleLineSymbol", "esri/symbols/SimpleFillSymbol", "esri/dijit/Scalebar", "esri/dijit/BasemapGallery", "esri/dijit/BasemapLayer", "esri/dijit/Basemap", "esri/dijit/OverviewMap", "esri/tasks/locator", "esri/dijit/Search", "esri/symbols/PictureMarkerSymbol", "esri/InfoTemplate", "esri/dijit/HomeButton", "esri/geometry/Extent", "esri/SpatialReference", "esri/dijit/VisibleScaleRangeSlider", "esri/geometry/scaleUtils", "esri/virtualearth/VETiledLayer", "dijit/form/Button", "esri/tasks/query", "esri/geometry/Circle", "esri/graphic", "esri/symbols/SimpleMarkerSymbol", "dijit/layout/BorderContainer", "dijit/layout/ContentPane", "dijit/TitlePane", "dijit/form/CheckBox", "dojo/domReady!" ], function( dom, Color, keys, parser, esriConfig, has, Map,SnappingManager, Measurement, FeatureLayer, SimpleRenderer, GeometryService, SimpleLineSymbol, SimpleFillSymbol, Scalebar, BasemapGallery, BasemapLayer, Basemap, OverviewMap, Locator, Search, PictureMarkerSymbol, InfoTemplate , HomeButton , Extent, SpatialReference, VisibleScaleRangeSlider, scaleUtils, VETiledLayer, Button, Query, Circle, Graphic, SimpleMarkerSymbol ) { parser.parse(); map = new Map("map"); var basemaps = []; var waterTemplateLayer = new BasemapLayer({ url: "https://sampleserver1.arcgisonline.com/ArcGIS/rest/services/WaterTemplate/LocalGovernmentInfrastructureBasemap/MapServer" }); var waterBasemap = new Basemap({ layers: [waterTemplateLayer], title: "Water Template", thumbnailUrl: "images/waterThumb.png" }); basemaps.push(waterBasemap); var publicSafetyLayer = new BasemapLayer({ url: "https://sampleserver1.arcgisonline.com/ArcGIS/rest/services/PublicSafety/PublicSafetyBasemap/MapServer" }); var publicSafetyBasemap = new Basemap({ layers: [publicSafetyLayer], title: "Public Safety", thumbnailUrl: "images/safetyThumb.png" }); basemaps.push(publicSafetyBasemap); var basemapGallery = new BasemapGallery({ showArcGISBasemaps: false, basemaps: basemaps, map: map }, "basemapGallery"); basemapGallery.startup(); basemapGallery.on("error", function(error) { console.log(error); }); esriConfig.defaults.io.proxyUrl = "/proxy/"; // Add the census block points in on demand mode. An outfield is specified since it is used when calculating the total population falling within the one mile radius. var featureLayer = new FeatureLayer("https://sampleserver6.arcgisonline.com/arcgis/rest/services/Census/MapServer/0",{ outFields: ["POP2000"] }); // Selection symbol used to draw the selected census block points within the buffer polygon var symbol = new SimpleMarkerSymbol( SimpleMarkerSymbol.STYLE_CIRCLE, 12, new SimpleLineSymbol( SimpleLineSymbol.STYLE_NULL, new Color([247, 34, 101, 0.9]), 1 ), new Color([207, 34, 171, 0.5]) ); featureLayer.setSelectionSymbol(symbol); // Make unselected features invisible var nullSymbol = new SimpleMarkerSymbol().setSize(0); featureLayer.setRenderer(new SimpleRenderer(nullSymbol)); map.addLayer(featureLayer); var circleSymb = new SimpleFillSymbol( SimpleFillSymbol.STYLE_NULL, new SimpleLineSymbol( SimpleLineSymbol.STYLE_SHORTDASHDOTDOT, new Color([105, 105, 105]), 2 ), new Color([255, 255, 0, 0.25]) ); var circle; // When the map is clicked create a buffer around the click point of the specified distance map.on("click", function(evt){ circle = new Circle({ center: evt.mapPoint, geodesic: true, radius: 1, radiusUnit: "esriMiles" }); map.graphics.clear(); var graphic = new Graphic(circle, circleSymb); map.graphics.add(graphic); var query = new Query(); query.geometry = circle.getExtent(); // Use a fast bounding box query. It will only go to the server if bounding box is outside of the visible map. featureLayer.queryFeatures(query, selectInBuffer); }); function selectInBuffer(response){ var feature; var features = response.features; var inBuffer = []; // Filter out features that are not actually in buffer, since we got all points in the buffer's bounding box for (var i = 0; i < features.length; i++) { feature = features; if(circle.contains(feature.geometry)){ inBuffer.push(feature.attributes[featureLayer.objectIdField]); } } var query = new Query(); query.objectIds = inBuffer; // Use an objectIds selection query (should not need to go to the server) featureLayer.selectFeatures(query, FeatureLayer.SELECTION_NEW, function(results){ var totalPopulation = sumPopulation(results); var r = ""; r = "<b>The total Census Block population within the buffer is <i>" + totalPopulation + "</i>.</b>"; dom.byId("messages").innerHTML = r; }); } function sumPopulation(features) { var popTotal = 0; for (var x = 0; x < features.length; x++) { popTotal = popTotal + features .attributes["POP2000"]; } return popTotal; } }); </script> </head> <body class="claro"> <span id="messages">Click on the map to select census block points within 1 mile.</span> <div data-dojo-type="dijit/layout/BorderContainer" data-dojo-props="design:'headline', gutters:true" style="width:100%;height:100%;"> <div id="map" data-dojo-type="dijit/layout/ContentPane" data-dojo-props="region:'center'"> </div> <div data-dojo-type="dijit/layout/ContentPane" data-dojo-props="region:'right'" id="rightPane"> <div data-dojo-type="dijit/layout/BorderContainer" data-dojo-props="design:'headline', gutters:false" style="width:100%;height:100%;"> <div id="paneHeader" data-dojo-type="dijit/layout/ContentPane" data-dojo-props="region:'top'"> <span>Select Basemap</span> </div> <div data-dojo-type="dijit/layout/ContentPane" data-dojo-props="region:'center'"> <div id="basemapGallery"></div> </div> </div> </div> </div> </body> </html>
... View more
11-26-2017
08:54 PM
|
0
|
2
|
786
|
|
POST
|
Hi I add query buffer to your sample code, but the map service can not show!!. If I remove map.addLayer(featureLayer); from code the map service load ok . please help me <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <meta name="viewport" content="initial-scale=1, maximum-scale=1,user-scalable=no"> <title>Display Multiple ArcGIS Online Services</title> <link rel="stylesheet" href="https://js.arcgis.com/3.22/dijit/themes/claro/claro.css"> <link rel="stylesheet" href="https://js.arcgis.com/3.22/esri/css/esri.css"> <style> html, body { height: 97%; width: 98%; margin: 1%; } #map { border: solid 1px #B5BCC7; padding: 0; } #paneHeader { background: url(images/header.png) repeat-x; color: white; border-bottom: solid 1px #B5BCC7; text-align: center; height: 30px; margin: 0; overflow: hidden; font-size: 16px; padding: 8px 5px; } #rightPane { width: 150px; margin: 0; padding: 0; } </style> <script src="https://js.arcgis.com/3.22/"></script> <script> var map; require([ "dojo/dom", "esri/Color", "dojo/keys", "dojo/parser", "esri/config", "esri/sniff", "esri/map", "esri/SnappingManager", "esri/dijit/Measurement", "esri/layers/FeatureLayer", "esri/renderers/SimpleRenderer", "esri/tasks/GeometryService", "esri/symbols/SimpleLineSymbol", "esri/symbols/SimpleFillSymbol", "esri/dijit/Scalebar", "esri/dijit/BasemapGallery", "esri/dijit/BasemapLayer", "esri/dijit/Basemap", "esri/dijit/OverviewMap", "esri/tasks/locator", "esri/dijit/Search", "esri/symbols/PictureMarkerSymbol", "esri/InfoTemplate", "esri/dijit/HomeButton", "esri/geometry/Extent", "esri/SpatialReference", "esri/dijit/VisibleScaleRangeSlider", "esri/geometry/scaleUtils", "esri/virtualearth/VETiledLayer", "dijit/form/Button", "esri/tasks/query", "esri/geometry/Circle", "esri/graphic", "esri/symbols/SimpleMarkerSymbol", "dijit/layout/BorderContainer", "dijit/layout/ContentPane", "dijit/TitlePane", "dijit/form/CheckBox", "dojo/domReady!" ], function( dom, Color, keys, parser, esriConfig, has, Map,SnappingManager, Measurement, FeatureLayer, SimpleRenderer, GeometryService, SimpleLineSymbol, SimpleFillSymbol, Scalebar, BasemapGallery, BasemapLayer, Basemap, OverviewMap, Locator, Search, PictureMarkerSymbol, InfoTemplate , HomeButton , Extent, SpatialReference, VisibleScaleRangeSlider, scaleUtils, VETiledLayer, Button, Query, Circle, Graphic, SimpleMarkerSymbol ) { parser.parse(); map = new Map("map"); var basemaps = []; var waterTemplateLayer = new BasemapLayer({ url: "https://sampleserver1.arcgisonline.com/ArcGIS/rest/services/WaterTemplate/LocalGovernmentInfrastructureBasemap/MapServer" }); var waterBasemap = new Basemap({ layers: [waterTemplateLayer], title: "Water Template", thumbnailUrl: "images/waterThumb.png" }); basemaps.push(waterBasemap); var publicSafetyLayer = new BasemapLayer({ url: "https://sampleserver1.arcgisonline.com/ArcGIS/rest/services/PublicSafety/PublicSafetyBasemap/MapServer" }); var publicSafetyBasemap = new Basemap({ layers: [publicSafetyLayer], title: "Public Safety", thumbnailUrl: "images/safetyThumb.png" }); basemaps.push(publicSafetyBasemap); var basemapGallery = new BasemapGallery({ showArcGISBasemaps: false, basemaps: basemaps, map: map }, "basemapGallery"); basemapGallery.startup(); basemapGallery.on("error", function(error) { console.log(error); }); esriConfig.defaults.io.proxyUrl = "/proxy/"; // Add the census block points in on demand mode. An outfield is specified since it is used when calculating the total population falling within the one mile radius. var featureLayer = new FeatureLayer("https://sampleserver6.arcgisonline.com/arcgis/rest/services/Census/MapServer/0",{ outFields: ["POP2000"] }); // Selection symbol used to draw the selected census block points within the buffer polygon var symbol = new SimpleMarkerSymbol( SimpleMarkerSymbol.STYLE_CIRCLE, 12, new SimpleLineSymbol( SimpleLineSymbol.STYLE_NULL, new Color([247, 34, 101, 0.9]), 1 ), new Color([207, 34, 171, 0.5]) ); featureLayer.setSelectionSymbol(symbol); // Make unselected features invisible var nullSymbol = new SimpleMarkerSymbol().setSize(0); featureLayer.setRenderer(new SimpleRenderer(nullSymbol)); map.addLayer(featureLayer); var circleSymb = new SimpleFillSymbol( SimpleFillSymbol.STYLE_NULL, new SimpleLineSymbol( SimpleLineSymbol.STYLE_SHORTDASHDOTDOT, new Color([105, 105, 105]), 2 ), new Color([255, 255, 0, 0.25]) ); var circle; // When the map is clicked create a buffer around the click point of the specified distance map.on("click", function(evt){ circle = new Circle({ center: evt.mapPoint, geodesic: true, radius: 1, radiusUnit: "esriMiles" }); map.graphics.clear(); var graphic = new Graphic(circle, circleSymb); map.graphics.add(graphic); var query = new Query(); query.geometry = circle.getExtent(); // Use a fast bounding box query. It will only go to the server if bounding box is outside of the visible map. featureLayer.queryFeatures(query, selectInBuffer); }); function selectInBuffer(response){ var feature; var features = response.features; var inBuffer = []; // Filter out features that are not actually in buffer, since we got all points in the buffer's bounding box for (var i = 0; i < features.length; i++) { feature = features; if(circle.contains(feature.geometry)){ inBuffer.push(feature.attributes[featureLayer.objectIdField]); } } var query = new Query(); query.objectIds = inBuffer; // Use an objectIds selection query (should not need to go to the server) featureLayer.selectFeatures(query, FeatureLayer.SELECTION_NEW, function(results){ var totalPopulation = sumPopulation(results); var r = ""; r = "<b>The total Census Block population within the buffer is <i>" + totalPopulation + "</i>.</b>"; dom.byId("messages").innerHTML = r; }); } function sumPopulation(features) { var popTotal = 0; for (var x = 0; x < features.length; x++) { popTotal = popTotal + features .attributes["POP2000"]; } return popTotal; } }); </script> </head> <body class="claro"> <span id="messages">Click on the map to select census block points within 1 mile.</span> <div data-dojo-type="dijit/layout/BorderContainer" data-dojo-props="design:'headline', gutters:true" style="width:100%;height:100%;"> <div id="map" data-dojo-type="dijit/layout/ContentPane" data-dojo-props="region:'center'"> </div> <div data-dojo-type="dijit/layout/ContentPane" data-dojo-props="region:'right'" id="rightPane"> <div data-dojo-type="dijit/layout/BorderContainer" data-dojo-props="design:'headline', gutters:false" style="width:100%;height:100%;"> <div id="paneHeader" data-dojo-type="dijit/layout/ContentPane" data-dojo-props="region:'top'"> <span>Select Basemap</span> </div> <div data-dojo-type="dijit/layout/ContentPane" data-dojo-props="region:'center'"> <div id="basemapGallery"></div> </div> </div> </div> </div> </body> </html>
... View more
11-26-2017
08:45 AM
|
0
|
1
|
764
|
|
POST
|
There is some problems in WAB: 1- User have to login to ArcGIS online. how we can overcome this restriction? 2- When I want to run my web app in the interanet network (no internet), my web app return this error: Error loading https://myappmyapp.maps.arcgis.com/sharing/rest/portals/self?f=json&callback=dojo_request_script_callbacks.dojo_request_script0 T
... View more
11-25-2017
11:02 PM
|
0
|
1
|
882
|
|
POST
|
I,m using search sample code and looking for a setting that search tools find similar words and list those. after list result choose every one related to her(him) search. for example I have 3 words in my database: 1- book man 2- book 2 3- booker I need a setting that when a client write "book", the list of 3 record show and user choose every one...
... View more
11-25-2017
05:04 AM
|
0
|
1
|
855
|
|
POST
|
Is there any way to restrict clients for zoom more than a scale? for example client just zoom up to 70000, or to level 10. Regards
... View more
11-25-2017
04:40 AM
|
0
|
1
|
458
|
| Title | Kudos | Posted |
|---|---|---|
| 1 | 11-21-2017 07:19 AM | |
| 1 | 08-08-2018 11:09 PM | |
| 1 | 11-24-2017 03:46 AM | |
| 1 | 10-19-2014 03:54 AM |
| Online Status |
Offline
|
| Date Last Visited |
07-28-2021
04:28 PM
|