leaflet 的最佳路径示例代码404的问题

0 投票

将示例代码源地址为https://iclient.supermap.io/examples/leaflet/editor.html#05_findPathService

       将地图,结点,最佳路径分析服务修改成自己的之后,结点可以显示,但是路径无法显示。按F12后网页报错找不到pathlist(后发现示例代码也有找不到pathlist的错误)和the server responded with a status of 404 () http://localhost:8090/iserver/services/transportationAnalyst-1/rest/networkanalyst/path.json……

  打开网页显示

{"succeed":false,"error":{"code":404,"errorMsg":"资源不存在"}}

  打开isever服务访问统计有

已知数据在桌面端可以正常运行。是服务发布的问题吗,求解答

4月 19 分类:  80次浏览 | 用户: 大小老鬼 初出茅庐 (43 分)

1个回答

1 投票
 
已采纳
您好,保存资源不存在,您的问题可能出在前端服务地址有误,1.您确认下是否服务地址是按照"https://iserver.supermap.io/iserver/services/transportationanalyst-sample/rest/networkanalyst/RoadNet@Changchun"这种结构。2.在确认下            var analystParameter = new SuperMap.TransportationAnalystParameter({
                resultSetting: resultSetting,
                weightFieldName: "length"
            });权重字段是否设置正确
4月 20 用户: 阳俊林 名扬四海 (2,567 分)
采纳于 4月 20 用户:大小老鬼

谢谢,修改后404没了,但是错误提示变成了

{{"执行 findPath 操作时出错,原因是:第1个点没有被捕捉 "}}

问答区搜了一下好像没有结果,可以解答一下吗

代码如下


<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title data-i18n="resources.title_findPath"></title>
<script type="text/javascript" src="../js/include-web.js"></script>
</head>
<body style=" margin: 0;overflow: hidden;background: #fff;width: 100%;height:100%;position: absolute;top: 0;">
<div id="map" style="margin:0 auto;width: 100%;height: 100%"></div>
<script type="text/javascript" src="../../dist/leaflet/include-leaflet.js"></script>
<script type="text/javascript">
        
			var y="http://localhost:8090/iserver/services/map-1/rest/maps/City";
			var dataUrl="http://localhost:8090/iserver/services/data-1/rest/data";
			var lujingurl="http://localhost:8090/iserver/services/transportationAnalyst-1/rest/networkanalyst/EmergDS_Network_1@EmergDS";
			
			
		    map = L.map('map', {
		        center: [ 30.61,103.7 ],
		        maxZoom: 50,
		        minZoom: 1,
		        zoom: 14,
				zoomControl:false,
			
				
				
		    });
			
		    L.supermap.tiledMapLayer(y).addTo(map);
			L.dragging=false;
			
			var marker1 = L.marker([30.6282922501411,103.70469372544355]).addTo(map);
			           marker1.bindPopup("化工厂");
			var marker1 = L.marker([30.613825137310666,103.68964498780981]).addTo(map);
			           marker1.bindPopup("浣熊市第一人民医院");
			
			findPathService = L.supermap.networkAnalystService(lujingurl);
			            
			            var resultSetting = new SuperMap.TransportationAnalystResultSetting({
			                returnEdgeFeatures: true,
			                returnEdgeGeometry: true,
			                returnEdgeIDs: true,
			                returnNodeFeatures: true,
			                returnNodeGeometry: true,
			                returnNodeIDs: true,
			                returnPathGuides: true,
			                returnRoutes: true
			            });
						  var analystParameter = new SuperMap.TransportationAnalystParameter({
						                resultSetting: resultSetting,
						                weightFieldName: "SmLength"
						            });
									
									
									
									
						   lujing1 = new SuperMap.FindPathParameters({
						                isAnalyzeById: false,
						                nodes: [ L.point(103.70469372544355,30.6282922501411), L.point(103.68964498780981,30.613825137310666)],
						                parameter: analystParameter
						            });
						            
						            findPathService.findPath(lujing1, function (serviceResult) {
						                var result = serviceResult.result;
						                result.pathList.map(function (result) {
						                    L.geoJSON(result.route).addTo(map);
						                })
						            });
    </script>
</body>
</html>

没有捕捉到,证明你的点与线的偏差距离有点大,容限设置的比较小的话,就有可能捕捉不到,我建议你发布服务的时候可以适当的改大点捕捉容限,或者现在桌面走通后,再iserver进行测试

在桌面端是可以走通的,就是在服务器端不行

你原始的数据的坐标系和你传入的点的坐标系不匹配吧,你这个原始数据看样子就是3857的,那你的把你的pint的点转为3857坐标系的点,然后提交给iserver端,iserver才能就行分析,才能正确的返回结果,返回后的结果你可以提供L.Util.transform(feature, sourceCRS, targetCRS)将返回的3857的坐标系转为4326的再在地图上展示出。leaflet只是以地理坐标方式去展示数据,你所看到的都是提供动态投影得到的位置,而并非真实的位置。
好了好了,的确是投影的问题。把原来的地图投影转换了下重新发布了一个4326的服务套进去就好了。非常感谢

上午向您请教的第二个问题:http://ask.supermap.com/66316

我把投影改成4326的也还是报404

解决了,也是投影的问题,非常感谢
...