目录

批量算路-步行

功能介绍

提供多点之间步行路径规划功能。

场景描述

适用于高并发场景,如物流配送派单等场景,同时发起多个起终点之间的算路,筛选所需要的订单起终点。

使用约束

接口原型

承载协议

HTTPS POST

接口方向

开发者 -> 华为导航服务器

接口URL

https://mapapi.cloud.huawei.com/mapApi/v1/routeService/walkingMatrix?key=API KEY

说明:
  1. 获取API KEY的方式请参见获取API key。
  2. 使用API key时需要调用URLEncoder.encode("Your apiKey", "UTF-8")方法对API key进行encodeURI编码。例如:原始API key:ABC/DFG+ ,转换结果:ABC%2FDFG%2B。

数据格式

请求消息:Content-Type: application/json

响应消息:Content-Type: application/json

查询参数

参数

是否必选

参数类型

描述

key

是

String

鉴权秘钥,申请参见获取API key。

请求参数

Rquest Body

参数

是否必选

参数类型

描述

origin

是

Coordinate[]

起点的经纬度,不能超过100个。

destination

是

Coordinate[]

终点的经纬度,不能超过100个。

说明:
  • 起点数乘以终点数需不超过100。
  • 起点和终点的直线距离不能超过150km。

language

否

String(<=6)

文字指引/描述的语种。目前只支持zh_CN和en。

avoid

否

int[]

表示计算出的路径应避免所指示的特性。取值包括:

  • 0:时间最短
  • 8:避免轮渡

默认值为0。

请求示例

POST https://mapapi.cloud.huawei.com/mapApi/v1/routeService/walkingMatrix?key=API KEY HTTP/1.1 
Content-Type: application/json 
Accept: application/json 
{
    "origins": [
        {
            "lng": 2.359782,
            "lat": 48.862544
        },
        {
            "lng": 2.358537,
            "lat": 48.861443
        }
    ],
    "destinations": [
        {
            "lng": 2.361702,
            "lat": 48.86042
        }
    ],
    "language": "en"
}

响应参数

状态码为200时:

Response Header

参数

是否必选

参数类型

描述

Content-Type

是

application/json

响应消息的数据格式。

Response Body

参数

参数类型

描述

returnCode

String

返回码,具体请参见错误码。

returnDesc

String

返回值描述。

originAddresses

String[]

Origins的地址详情。

destinationAddresses

String[]

Destinations的地址详情。

rows

Row[]

Origins和Destinations两两进行路径规划后的计算出来的时长和距离。

响应示例

状态码为200时:

HTTP/1.1 200 OK
Content-type: application/json
{
    "originAddresses": [
        "76, Rue des Archives, 75003, Le Marais, 3e Arrondissement, Paris, Île-de-France, France",
        "62, Rue des Archives, 75003, 3e Arrondissement, Paris, Île-de-France, France"
    ],
    "returnCode": "0",
    "destinationAddresses": [
        "101 T, Rue Des Coutures Saint-Gervais, 75003, 3e Arrondissement, Paris, Île-de-France, France"
    ],
    "rows": [
        {
            "cells": [
                {
                    "duration": 268.684,
                    "durationText": "4min",
                    "distance": 353.573,
                    "distanceText": "354m",
                    "status": 0
                }
            ]
        },
        {
            "cells": [
                {
                    "duration": 256.39,
                    "durationText": "4min",
                    "distance": 352.386,
                    "distanceText": "352m",
                    "status": 0
                }
            ]
        }
    ],
    "returnDesc": "OK"
}

调用示例

public class MatrixService {
    public static final String ROOT_URL = "https://mapapi.cloud.huawei.com/mapApi/v1/routeService/walkingMatrix";

    public static final String connection = "?key=";

    public static final MediaType JSON = MediaType.parse("application/json; charset=utf-8");

    public static void matrixWalking(String apiKey) throws UnsupportedEncodingException {
        JSONObject json = new JSONObject();
        JSONArray origin = new JSONArray();
        JSONObject startingPoint_1 = new JSONObject();
        JSONObject startingPoint_2 = new JSONObject();
        JSONArray destination = new JSONArray();
        JSONObject endPoint = new JSONObject();

        try {
            startingPoint_1.put("lng", 2.359782);
            startingPoint_1.put("lat", 48.862544);

            startingPoint_2.put("lng", 2.358537);
            startingPoint_2.put("lat", 48.861443);

            origin.put(0, startingPoint_1);
            origin.put(1, startingPoint_2);

            endPoint.put("lng", 2.361702);
            endPoint.put("lat", 48.860420);

            destination.put(0, endPoint);

            json.put("origins", origin);
            json.put("destinations", destination);
            json.put("language", "en");
        } catch (JSONException e) {
            Log.e("error", e.getMessage());
        }
        RequestBody body = RequestBody.create(JSON, String.valueOf(json));

        OkHttpClient client = new OkHttpClient();
        Request request =
            new Request.Builder().url(ROOT_URL + connection + URLEncoder.encode(apiKey, "UTF-8"))
                .post(body)
                .build();

        client.newCall(request).enqueue(new Callback() {
            @Override
            public void onFailure(Call call, IOException e) {
                Log.e("MatrixWalking", e.toString());
            }

            @Override
            public void onResponse(Call call, Response response) throws IOException {
                Log.d("MatrixWalking", response.body().string());
            }
        });
    }
}

Postman调试

您可以使用Postman在线调试此接口。