首页 / 浏览问题 / WebGIS / 问题详情
Vue中使用iclient-ol进行最短路径分析无结果
17EXP 2023年04月18日
import { Logo, TileSuperMapRest, Tianditu, FeatureService, GetFeaturesBySQLParameters, TransportationAnalystResultSetting, TransportationAnalystParameter, FindPathParameters, NetworkAnalystService } from "@supermap/iclient-ol"; findPathProcess() { //创建最佳路径分析参数实例 var resultSetting = new TransportationAnalystResultSetting({ returnEdgeFeatures: true, returnEdgeGeometry: true, returnEdgeIDs: true, returnNodeFeatures: true, returnNodeGeometry: true, returnNodeIDs: true, returnPathGuides: true, returnRoutes: true, }); var analystParameter = new TransportationAnalystParameter({ resultSetting: resultSetting, weightFieldName: "SmLength", }); var findPathParameter = new FindPathParameters({ isAnalyzeById: false, nodes: [ new Point([99.788454, 31.181145]), new Point([101.661121, 29.037998]), new Point([104.983625, 31.358148]), ], hasLeastEdgeCount: false, parameter: analystParameter, }); //进行查找 new NetworkAnalystService(this.serviceUrl).findPath( findPathParameter, (serviceResult)=> { console.log(serviceResult); var guideLayerStyle = new Style.Style({}); var routeLayerStyle = new Style.Style({ stroke: new Style.Stroke({ color: "#00a30bff", width: 7, }), fill: new Style.Fill({ color: "rgba(0, 0, 255, 0.1)", }), }); serviceResult.result.pathList.map((result) => { console.log(result); }); } ); }, 最短路径分析在Vue中的代码如上。运行后的结果中没有任何路线和节点。而我在传统的html中已经做过了一次,运行结果正常。路线也显示出来了。请问怎么在Vue中解决这个问题,实现最短路径?

2 个回答

您好,您这一片代码没法帮您看出是有什么问题的。

您这边定位确认下,是具体跑到哪一行代码或者哪个接口,没有返回预期结果或者报错呢。

可以给您一些排查思路的建议:

并且核对下传入的数据和地址是否有问题,单纯最后进行路径分析这一步的话,不管vue还是无框架都是对isever发出一样的请求,

比如您可以看下最后分析哪一步,发的网络请求地址和参数body是否一致,如果一致的话看一下这步返回结果是否是对的,对的话看下后续业务代码的使用有什么问题。

如果这里不一致的话,向上排查代码具体是哪里的代码导致参数怎么错的。

如果这里是没有返回结果,确认下iClient依赖的引用是否完全。

希望可以帮助到您。
于丁
1
10,538EXP 2023年04月18日
找到bug了。问题在Point这个类上。生成的结点一直是undefined

一开始这样导入点: import Point from "ol/geom/Point";

改为超图下的: import Point from '@supermap/iclient-ol/node_modules/ol/geom/Point'

现在生成的结点可以正常使用了。
17EXP 2023年04月20日
...