[英]Layers not displaying on map using widget in Arcgis API
我正在尝试使用小部件将起点连接到目的地分析来计算旅行时间和点对之间的距离。
用户可以选择以下方式之一计算距离或时间:
• 直线距离
• 驾驶时间
• 行驶距离
• 货运时间
• 卡车运输距离
• 步行时间
• 步行距离
但是这个小部件似乎没有显示我的结果,也没有在地图上显示我的图层。 我需要关于这个问题的帮助。 我正在做的是如下:
<!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>ConnectOriginsToDestinations</title>
<link rel="stylesheet" href="https://js.arcgis.com/3.38/dijit/themes/claro/claro.css" />
<link rel="stylesheet" href="https://js.arcgis.com/3.38/esri/css/esri.css" />
<style>
html,
body,
#border-container {
height: 100%;
margin: 0;
}
/* Don't display the analysis widget's close icon*/
.esriAnalysis .esriAnalysisCloseIcon {
display: none;
}
</style>
<script src="https://js.arcgis.com/3.38/"></script>
<script>
require([
"dojo/ready",
"dojo/parser",
"esri/map",
"esri/layers/FeatureLayer",
"esri/dijit/analysis/ConnectOriginsToDestinations",
"esri/InfoTemplate",
"dijit/layout/BorderContainer",
"dijit/layout/ContentPane",
"dojo/domReady!"
], function(
ready,
parser,
Map,
FeatureLayer,
ConnectOriginsToDestinations,
InfoTemplate
) {
ready(function() {
parser.parse();
var map = new Map("map", {
basemap: "topo-vector",
center: [-117.76, 34.06],
zoom: 9
});
var originsLayer = new FeatureLayer("https://services.arcgis.com/V6ZHFr6zdgNZuVG0/arcgis/rest/services/origins/FeatureServer/0");
var destinationsLayer = new FeatureLayer("https://services.arcgis.com/V6ZHFr6zdgNZuVG0/arcgis/rest/services/destinations_fs/FeatureServer/0", {
name: "destinations",
outFields: ["*"]
});
map.addLayers(originsLayer, destinationsLayer);
var analysisTool;
map.on("layers-add-result", initializeTool);
function initializeTool() {
var params = {};
params.portalUrl = "https://www.arcgis.com";
params.originsLayers = [ originsLayer ];
params.featureLayers = [ destinationsLayer ];
params.map = map;
params.distanceDefaultUnits = "Miles";
params.returnFeatureCollection = true;
analysisTool = new ConnectOriginsToDestinations(params, "toolPane");
analysisTool.startup();
analysisTool.on("job-result", function(result) {
var resultLayer = new FeatureLayer(result.value.url || result.value, {
outFields: ['*'],
infoTemplate: new InfoTemplate()
});
map.addLayer(resultLayer);
});
}
});
});
</script>
</head>
<body class="claro">
<div id="border-container" data-dojo-type="dijit/layout/BorderContainer" data-dojo-props="design:'headline',gutters:false">
<div id="map" data-dojo-type="dijit/layout/ContentPane" data-dojo-props="region:'center'" style="padding: 0;">
</div>
<div data-dojo-type="dijit/layout/ContentPane" data-dojo-props="region:'left'" style="width: 300px;">
<div id="toolPane">
</div>
</div>
</div>
</body>
</html>
您在 array 中声明了层,但是在您的代码中您没有以 array 格式编写它们,这就是它没有显示的原因
map.addLayers([originsLayer, destinationsLayer]);
var analysisTool;
map.on("layers-add-result", initializeTool);
function initializeTool() {
var params = {};
params.portalUrl = "https://www.arcgis.com";
params.originsLayers = [ originsLayer ];
params.featureLayers = [ destinationsLayer ];
params.map = map;
params.distanceDefaultUnits = "Miles";
params.returnFeatureCollection = true;
analysisTool = new ConnectOriginsToDestinations(params, "toolPane");
analysisTool.startup();
analysisTool.on("job-result", function(result) {
var resultLayer = new FeatureLayer(result.value.url || result.value, {
outFields: ['*'],
infoTemplate: new InfoTemplate()
});
map.addLayer(resultLayer);
});
}
});
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.