点定里程

点定里程是计算路由上某点到起始点的 M 值,实际应用情景例如知道某事故发生的位置确定该点位于某路口距离。

下面以长春数据为例,计算一条路上(路由 ID 为1690的路由)发生交通事故的地点到该条路路口的距离。

点定里程接口使用方法如下:

地图加载完成后进行点定里程分析服务,首先根据 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) {
    // 获取SQL查询结果
    var queryBySQLResult = SQLQueryServiceResult.result.recordsets[0].features;
    // 将形成路由的点提出来,为了构造下面点定里程服务sourceRoute
    var pointsList = [];
    var routeObj = queryBySQLResult.features[0].geometry.coordinates[0];
    for (var i = 0; i < routeObj.length; i++) {
        pointsList.push([routeObj[i][0], routeObj[i][1],routeObj[i][2]])
    }
    routeLine = L.polyline(pointsList);
    // 创建点定里程服务实例
    var serviceUrl ="http://support.sueprmap.com.cn:8090/iserver/services/spatialanalyst-changchun/restjsr/spatialanalyst";
    var routeCalculateMeasureService = L.supermap.spatialAnalystService(serviceUrl);
    // 点定里程服务参数设置
    var routeCalculateMeasureParameters = new SuperMap.RouteCalculateMeasureParameters({
            "sourceRoute": routeLine, // 路由类型
            "point": L.point(routeObj[7][0], routeObj[7][1]),// 查询点
            "tolerance": 10,
            "isIgnoreGap": false
    });
    // 向服务端发送请求并获取数据
    routeCalculateMeasureService.routeCalculateMeasure(routeCalculateMeasureParameters, function (routeCaculateServiceResult) {
        // 获取服务端返回的数据
        var result = routeCaculateServiceResult.result;
    });
});

查看完整示例代码

results matching ""

    No results matching ""