首页 / 浏览问题 / 其他 / 问题详情
最近设施分析
14EXP 2017年05月07日


您好,上面是我的转向表,在进行最近设施分析时报出下面的错误,请问如何解决?

相关的答案: iClient for js

1个回答

您好,请您将您的完整的关于最近设施分析的js脚本回复至下方,我好帮您进一步分析。
1,695EXP 2017年05月08日
 //最近设施分析 开始 CloFac
        var CloFacVectorLayer, CloFacMarkerLayer1,
        CloFacMarkerLayer2, CloFacDrawPoint, CloFaceEventPoint, n = 0,
        facilityPoints = [
        new SuperMap.Geometry.Point(6000, -5500),
        new SuperMap.Geometry.Point(5500, -2500),
        new SuperMap.Geometry.Point(2500, -3500)],
        CloFacStyle = {
            strokeColor: "#304DBE",
            strokeWidth: 3,
            pointerEvents: "visiblePainted",
            fill: false
        };
        function CloFacInit() {
            CloFacVectorLayer = new SuperMap.Layer.Vector("CloFacVectorLayer");
            CloFacDrawPoint = new SuperMap.Control.DrawFeature(CloFacVectorLayer, SuperMap.Handler.Point);
            CloFacDrawPoint.events.on({ "featureadded": CloFacdrawCompleted });
            map.addControl(CloFacDrawPoint);
          
            
            CloFacMarkerLayer1 = new SuperMap.Layer.Markers("CloFacMarkerLayer1");
            CloFacMarkerLayer2 = new SuperMap.Layer.Markers("CloFacMarkerLayer2");

            var size = new SuperMap.Size(44, 40),
            offset = new SuperMap.Pixel(-(size.w / 2), -size.h),
            icon1 = new SuperMap.Icon("../theme/images/marker-gold.png", size, offset),
            icon2 = new SuperMap.Icon("../theme/images/marker-gold.png", size, offset),
            icon3 = new SuperMap.Icon("../theme/images/marker-gold.png", size, offset);
            CloFacMarkerLayer1.addMarker(new SuperMap.Marker(new SuperMap.LonLat(506572.4, 4341566.5), icon1));
            CloFacMarkerLayer1.addMarker(new SuperMap.Marker(new SuperMap.LonLat(506812.938, 4340690), icon2));
            CloFacMarkerLayer1.addMarker(new SuperMap.Marker(new SuperMap.LonLat(507672.281, 4342141), icon3));
            map.addLayers([CloFacVectorLayer, CloFacMarkerLayer1, CloFacMarkerLayer2]);
        }

        function CloFacSelectEventPoint() {
            CloFacClearElements();
            CloFacDrawPoint.activate();
        }
        function CloFacdrawCompleted(drawGeometryArgs) {
            var point = drawGeometryArgs.feature.geometry,
            size = new SuperMap.Size(44, 33),
            offset = new SuperMap.Pixel(-(size.w / 2), -size.h),
            icon = new SuperMap.Icon("../theme/images/marker.png", size, offset);
            CloFacMarkerLayer2.addMarker(new SuperMap.Marker(new SuperMap.LonLat(point.x, point.y), icon));
            CloFaceEventPoint = point;
            n++;
            if (n >= 1) {
                CloFacDrawPoint.deactivate();
            }
        }
        function findClosestFacilities() {
            CloFacDrawPoint.deactivate();
            if (!CloFaceEventPoint) {
                alert("请选择事件点!");
                return;
            }
            var findClosestFacilitiesService, parameter, analystParameter, resultSetting;
            resultSetting = new SuperMap.REST.TransportationAnalystResultSetting({
                returnEdgeFeatures: true,
                returnEdgeGeometry: true,
                returnEdgeIDs: true,
                returnNodeFeatures: true,
                returnNodeGeometry: true,
                returnNodeIDs: true,
                returnPathGuides: true,
                returnRoutes: true
            });
            //var edgeWeightNamesSelect = document.getElementById("edgeWeightNames");
           // var weightFieldName = edgeWeightNamesSelect.options[edgeWeightNamesSelect.selectedIndex].text;

            //var turnWeightFieldSelect = document.getElementById("turnNodeWeightNames");
            //var turnNodeWeightNames = turnWeightFieldSelect.options[turnWeightFieldSelect.selectedIndex].text;
            analystParameter = new SuperMap.REST.TransportationAnalystParameter({
                resultSetting: resultSetting,
               turnWeightField: "TurnCost",
               weightFieldName: "SmLength"
            });
            parameter = new SuperMap.REST.FindClosestFacilitiesParameters({
                event: CloFaceEventPoint,
                expectFacilityCount: 1,
                isAnalyzeById: false,
                facilities: facilityPoints,
                parameter: analystParameter
            });
            findClosestFacilitiesService = new SuperMap.REST.FindClosestFacilitiesService(url2, {
                eventListeners: { "processCompleted": CloFacprocessCompleted, "processFailed": CloFacprocessFailed}
            });
            findClosestFacilitiesService.processAsync(parameter);
        }
        function CloFacprocessCompleted(findClosestFacilitiesEventArgs) {
           // alert(1);
            var result = findClosestFacilitiesEventArgs.result,
            features = [];
            //console.log(result.facilityPathList);//null
            if (result.facilityPathList) {
                alert(result.facilityPathList.length);
                for (var i = 0, facilityPathList = result.facilityPathList, len = facilityPathList.length; i < len; i++) {
                    var feature = new SuperMap.Feature.Vector();
                    feature.geometry = facilityPathList[i].route;
                    feature.style = CloFacStyle;
                    features.push(feature);
                }
            }
            CloFacVectorLayer.addFeatures(features);
        }
        function CloFacprocessFailed(findClosestFacilitiesEventArgs) {
            console.log(findClosestFacilitiesEventArgs.error.);
        }
        function CloFacClearElements() {
            CloFaceEventPoint = null;
            n = 0;
            CloFacMarkerLayer2.clearMarkers();
            CloFacVectorLayer.removeAllFeatures();
        }
        function CloFacClearAll() {
            map.removeControl(CloFacDrawPoint);
            map.removeLayer(CloFacVectorLayer);
            map.removeLayer(CloFacMarkerLayer1);
            map.removeLayer(CloFacMarkerLayer2);
        }






 <div id="CloFacToolbar">
        <input type="button" class="CloFac-btn" value="事件点" style="margin-bottom: 10px" onclick="CloFacSelectEventPoint()" />
        <input type="button" class="CloFac-btn" value="提交" style="margin-bottom: 10px" onclick="findClosestFacilities()" />
        <input type="button" class="CloFac-btn" value="清除" style="margin-bottom: 10px" onclick="CloFacClearElements()" />
    </div>

这是我的代码,您看一下,谢谢

您这里的设置的两个字段的名称是出了问题,这里应该去指定一个数据集然后用@符号来指定对应字段,类似于“Country@name”这样子

1.您好,第二个字段(权重字段)是在网络数据集中吗?

2.在iserver交通网络分析服务中设置转向表为什么设置不了,选择好字段并保存后选择的字段信息消失了,如下图所示,请问为甚么?

权重字段一定是在网络数据集中的某个字段,一般使用系统默认长度字段smlength;

这可能是您没有正确的制作网络数据集,您可以参考以下博客了解更多:

http://blog.csdn.net/supermapsupport/article/details/53434862

...