У меня есть файл HTML, выполняющий задачу запроса на функциональном уровне веб-карты.Как определить модуль и использовать его для разделения файлов js
Теперь я хочу разделить файл на 3 разных файла: html-файл, файл main.js, который загружает веб-карту, и файл Color-Code.js, который выполняет задачу Query, а остальное. В принципе, html-файл должен вызывать main.js, который в свою очередь должен вызывать Color_Code.js.I пробовал его с require.js ... но я получаю файл Color-Code.js, который не каждый раз обнаруживает ошибку. Я действительно новичок в dojo и arcGIS, так что кто-то может указать, где я ошибаюсь.
Main.js -> require([
"Color-Extent",
"dojo/parser",
"esri/arcgis/utils",
"esri/map",
"esri/dijit/Legend",
"dojo/domReady!"
], function (
ColorExtent,
parser,
arcgisUtils,
Map,
Legend
) {
parser.parse();
return {
createMap: function() {
arcgisUtils.createMap("ce88f9dba8d748a4bf3aa8d6c8027d2e ", "map").then(function (response) {
var map = response.map;
var legend = new Legend({
map: map,
layerInfos: (arcgisUtils.getLegendLayers(response))
}, "legendDiv");
legend.startup();
});
return map;
ColorExtent.colorCurrentExtent();
}
}
});
Color-Code.js ->
define([ "Main",
"dojo/parser",
"esri/arcgis/utils",
"esri/map",
"esri/dijit/Legend",
"esri/tasks/QueryTask",
"esri/tasks/query",
"esri/symbols/SimpleMarkerSymbol",
"esri/symbols/SimpleLineSymbol",
"esri/Color",
"dojo/_base/json",
"dojo/text!./jdata.txt",
"esri/geometry/Extent",
"dojo/_base/array",
"esri/layers/GraphicsLayer",
"esri/graphic",
"dojo/domReady!"
], function (
main,
parser,
arcgisUtils,
Map,
Legend,
QueryTask,
Query,
SimpleMarkerSymbol,
SimpleLineSymbol,
Color,
json,
JData,
Extent,
array,
GraphicsLayer,
Graphic
) {
function colorCurrentExtent() {
parser.parse();
map.on("load", function() {
var map = main.createMap();
var queryTask = new QueryTask(featureLayer.url);
var query = new Query();
query.outFields = ["OBJECTID"];
query.returnGeometry = true;
query.where = "1=1";
queryTask.execute(query, showResults);
})
function showResults(featureSet) {
var symbol = new SimpleMarkerSymbol();
symbol.setSize(20);
var resultFeatures = featureSet.features;
var storeobj = dojo.fromJson(JData);
map.on("extent-change", function() {
var extent = map.extent;
graphiclayer.clear();
//var extent = map.geographicExtent;
array.forEach(resultFeatures, function (feature) {
if (extent.contains(feature.geometry)) {
for (var i = 0; i < 30; i++) {
if (feature.attributes.OBJECTID === storeobj[0].data[i].assetID) {
switch (storeobj[0].data[i].colorCode) {
case 1:
symbol.setColor(new Color([0, 255, 0, 0.75]));
break;
case 2:
symbol.setColor(new Color([255, 165, 0, 0.75]));
break;
case 3:
symbol.setColor(new Color([255, 255, 0, 0.75]));
break;
case 4:
symbol.setColor(new Color([255, 0, 0, 0.75]));
break;
default:
symbol.setColor(new Color([128, 128, 128, 0.75]));
break;
} // end switch
graphiclayer.add(new Graphic(feature.geometry, symbol));
break;
} //end if
} // end for
} //end if
}) // end forEach
}) // end extent-change
} // end showResults
map.addLayer(graphiclayer);
} //colorCurrentExtent
}); and
Я ссылки на них на странице HTML, как
<script src="https://js.arcgis.com/3.16/"></script>
<script data-main="Main" src="require.js"></script>
Я пробовал следовать тому, что было изложено в учебнике, но, очевидно, что-то очень не так. Я редактировал свой вопрос с изменениями, которые я сделал, возможно, вы могли бы помочь мне в этом. –