里程定线

里程定线是根据指定线的范围来确定路由上对应的线对象。应用场景如当知道某一路段发生阻塞,能够确定该路段相对精确的位置范围。

下面以长春数据为例,一条路(路由ID为1690的路由)在距离路口 10-800km 之间的发生堵塞。

地图加载完成后进行里程定线分析服务,首先根据 RouteID 获得路由对象,路由对象查询成功之后才能进行后续的里程定线操作。里程定线的接口使用方法如下:

// 通过SQL查询的方法建立路由
var queryBySQLService = L.supermap.queryService(baseUrl);
// SQL查询服务参数设置
var queryBySQLParams = new SuperMap.QueryBySQLParameters({
    queryParams: [
        new SuperMap.FilterParameter({
            name: "RouteDT_road@Changchun",
            attributeFilter: "RouteID=1690"
        })]
    });
// 创建SQL查询
queryBySQLService.queryBySQL(queryBySQLParams, function (serviceResult) {
    // 将形成路由的点提出来,为了构造下面里程定点服务sourceRoute属性的routeLine
    var pointsList = [];
    var routeObj = serviceResult.result.recordsets[0].features.features[0].geometry.coordinates[0];
    for (var i = 0; i < routeObj.length; i++) {
        pointsList.push([routeObj[i][1], routeObj[i][0], routeObj[i][2]])
    }
    var routeLine = L.polyline(pointsList);
    // 里程定线参数设置
    var routeLocatorParams_line = new SuperMap.RouteLocatorParameters({
        "sourceRoute": routeLine, // 路由对象
        "type": "LINE", // 类型,点或线
        "startMeasure": 10, // 定位线的起始M值
        "endMeasure": 800, // 定位线的终止M值
        "isIgnoreGap": true // 是否忽略子对象之间的距离
    });
    // 创建里程定线服务实例
    var serviceUrl ="http://support.supermap.com.cn:8090/iserver/services/spatialanalyst-changchun/restjsr/spatialanalyst";
    var routeLocatorService = L.supermap.spatialAnalystService(serviceUrl);
    // 向服务器发送请求进行里程定线服务分析,并将返回的结果进行处理展现在客户端上
    routeLocatorService.routeLocate(routeLocatorParams_line, function (serviceResult) {
        // 获取服务端返回的数据
        var result = routeCaculateServiceResult.result;
    })
});

查看完整示例代码

results matching ""

    No results matching ""