Optimization
介绍
Nextbillion.ai Optimization API计算并返回一个优化的路线,该路线在起点和终点之间有多个停靠点。使用NextBillion.ai的Optimization API,你可以得到:
- 优化路径点间的路径
- 具有高精度到达时间的自定义路径
- 对自定义目的地进行往返优化
所有参数的列表在下一节具体说明。
参数
Request 参数
Loading...Response Schema
Loading...例子
简单 API Request
{{base_url}}/optimization/json?coordinates=41.35544869444527,2.0747669962025292|41.37498154684205,2.103705 4530396886|41.38772862000152,2.1311887061315526&destination=last&key={{api_key}}&mode=4w&source=first& roundtrip=false&with_geometry=true
对于上述例子,这里是我们使用的参数-
- 我们设置了3个由管道符号(|)分隔的坐标。
- 我们将目的地设置为最后一个坐标。这意味着我们之前设置的坐标列表的最后一项会被用作目的地。
- 出发点属性被设置为第一项,所以坐标列表中的第一个项对将被视为出发点。
- 我们将模式设置为4w,这将返回一条只与四轮车有关的路线。
- roundtrip属性被设置为false,所以将不会返回任何往返的路线。
- 通过设置with_geometry属性为true,我们将确保为旅程的每一段返回路径几何信息。
简单 API Response
1{
2 "code": "Ok",
3 "waypoints": [
4 {
5 "name": "",
6 "location": {
7 "latitude": 41.35544869444527,
8 "longitude": 2.0747669962025292
9 },
10 "trips_index": 0,
11 "waypoint_index": 0
12 },
13 {
14 "name": "",
15 "location": {
16 "latitude": 41.37498154684205,
17 "longitude": 2.1037054530396886
18 },
19 "trips_index": 0,
20 "waypoint_index": 1
21 },
22 {
23 "name": "",
24 "location": {
25 "latitude": 41.38772862000152,
26 "longitude": 2.1311887061315526
27 },
28 "trips_index": 0,
29 "waypoint_index": 2
30 }
31 ],
32 "trips": [
33 {
34 "geometry": "sjc{mA_hs}BtDcGlHkMrEgIpD}H~A}ErAqGj@iFRaHYwI_AsJi@_GcB_PIw@c@_JK{HJwHp@{LHwGAkFr@so@ VuYTcYNsJXqG|@wLdC}PhAmEbB_ExDaIzPmKx@dArAr@v@N^@f@GXE^Sn@m@|@_Bd@oBNiBUmCc@oBi@m@iAi@{@ [mAIkNqe@eTix@iHqXeOod@gC{Hy`@cmAiOme@}D{LoEgNqJeZ}Ii\\cM}e@oEyPsHkWcDiNsAyFk@cDi@aDk@eF{DcYg@ cF{@oFWyBiDuRq@{LhD}Ava@yQ`HrA~Al@~ApAbBhB~ArBlA|BbCxH~AzJElFOfGi@nEsAlFoB|EiBfDyHtGeEnD{ElCuDjAa F~AwD`AiDbAyAx@{@~Bc@V{@^}A\\uGdB_Ex@_@DgNdC{@NyOzCwMlAgCHoHXwFPsLFkQKcBGsLc@_Mq@oLcAoJcAuG w@yHuAwJuBwFkAgHeBcJuB}IqBgAWwFoAsu@wP{G}AaASiB]}WeFeGmAiCg@mMwCaJaCkEiAqFeAkB_@qB_@gFaAaOi Di@KiSmEeNsC_NgCiJgBkZcGqUcFsMkCaB]kAW{KwByA[_Ey@qAYaWsFmXuH{JoD}QaHuEaCmNqHyOsIkM{IwGsF_WyRyH _Hg[}WyJeJ_[kV}LkIaEaCwG{DiN}HqQyHgE_B_EyAe@Q}@]eKuDiAe@eA[qUiGeMkCcAQuFuDsAq@sC{A{As@_LaEuKwD_Jy C{LaFmLoF{KyFwHcEgIeEiFoCkGoEoYcTeB{AwEcF_BmByAkBaAiCsAwDYsBgRl@e_@nAb@iQrAgj@d@uRr@oYlDc|@\\yMt @uZlAuZJwCFqBf@{F?eFzDu}ATgIHuINqH`@aMb`@e]tZkXdNoMfBuAvI}GbJwI|@^p@L~@L|BUbCoBjA{CRqD?gAi@aBu@iBa Ak@gBQu@?cCVkA|@_AxAi@dBM~ACnCwJtIiLpKeUbS{o@jl@yG|FQzI?bDQ|CIvFOvCUnIuEf_BUzFEtAOdHu@dTMfJi@jQaB| l@sBbu@iAt`@mHlGgA~@u@^kA^gARaAHkBCmAU_Cq@{Aq@}A}@gBeA}AsA_CiCiByBqAiBgAqA}@yAi@}@aGuIwEiHg@y @yBkDyEiH{FwJiEoHcHsHkB}CeBuCwIoNsE}GqDmFmFyHcEaF}CoDg@yC{FqGmEaGeEwFsJqM{AaCmByCqD_Hi@mAq@{AyB iG}@yC_A}Dc@}B}@sE_@aCy@oFgAoHmA}HkB}I_@oAQo@a@cAk@}AwAwBgFqGeCcCo@e@cAk@iAg@{CwA[QqCo@kD w@aAOkEo@sNaCuF_BmCqA{DsCm@{@gBsB_@i@w@cBg@cAi@sA_AaDk@mC[oBiAkBsH{_@{D_SsC{Ni@gDUsAmGoYqK{ i@[aBuAeFo@qBaAgBcAoA{@yDmC}NmC{D_CcNkEcWgAeGy@gD_AeGeAwF]uBu@wDOcAsCaOgF_Xi@mGoBmIwDcVo@iFm _@oaCiEmQmAsH{AqJYgBaDgT{AcIaEwX_CkU|DqZ^mMgJcl@uCiReUwyAeQ_z@gOg_AaAoFuB_MkEsVgCkQIg@SiAmA{GmFq ZoE_WmByKk@qDmRgmAoEmYuB}M_BmKcHae@eBgL{AuJeMcx@k@eESwA_A}FwEuVwB}Kk@sDw@sF}DaX_FqXmJog@_BuI sBuMuAyIa@mCwIuk@oBaLU{A}AyJk@sDgCiPiAkH_DcScEyW`ZaK|WcJ|d@eQs@_FeFi^wCg[kQzN",
35 "legs": [
36 {
37 "distance": 4777.4,
38 "duration": 561.1064897726275,
39 "summary": "Carretera del Hospitalet, Ronda de Dalt",
40 "steps": [
41 {
42 "distance": 547.3,
43 "duration": 64.28048349574225,
44 "geometry": "sjc{mA_hs}BtDcGlHkMrEgIpD}H~A}ErAqGj@iFRaHYwI_AsJi@_GcB_PIw@c@_JK{HJwHp@{LHwGAkFr@so@V uYTcYNsJXqG|@wLdC}PhAmEbB_ExDaIzPmK"
45 },
46 {
47 "distance": 23.4,
48 "duration": 2.7483342112193836,
49 "geometry": "}fa{mAq|~}Bx@dArAr@v@N^@f@GXE^Sn@m@"
50 },
51 {
52 "distance": 21,
53 "duration": 2.4664537792994468,
54 "geometry": "e{`{mAuz~}B|@_Bd@oBNiBUmC"
55 },
56 {
57 "distance": 872.7,
58 "duration": 102.49877205688702,
59 "geometry": "gx`{mA}h_~Bc@oBi@m@iAi@{@[mAIkNqe@eTix@iHqXeOod@gC{Hy`@cmAiOme@}D{LoEgNqJeZ}Ii\\cM} e@oEyPsHkWcDiNsAyFk@cDi@aDk@eF{DcYg@cF{@oFWyBiDuRq@{L"
60 },
61 {
62 "distance": 77,
63 "duration": 9.043663857431305,
64 "geometry": "ksg{mAckq~BhD}Ava@yQ"
65 },
66 {
67 "distance": 252.5,
68 "duration": 29.656170441576684,
69 "geometry": "ikf{mA{`r~B`HrA~Al@~ApAbBhB~ArBlA|BbCxH~AzJElFOfGi@nEsAlFoB|EiBfDyHtGeEnD{ElCuDjAaF~ AwD`AiDbAyAx@{@~Bc@V{@^"
70 },
71 {
72 "distance": 1817.2,
73 "duration": 213.4304670353788,
74 "geometry": "kng{mAcln~B}A\\uGdB_Ex@_@DgNdC{@NyOzCwMlAgCHoHXwFPsLFkQKcBGsLc@_Mq@oLcAoJcAuGw @yHuAwJuBwFkAgHeBcJuB}IqBgAWwFoAsu@wP{G}AaASiB]}WeFeGmAiCg@mMwCaJaCkEiAqFeAkB_@qB_@gFaAaOiDi@K iSmEeNsC_NgCiJgBkZcGqUcFsMkCaB]kAW{KwByA[_Ey@qAYaWsFmXuH{JoD}QaHuEaCmNqHyOsIkM{IwGsF_WyRyH_Hg[}Wy JeJ_[kV}LkIaEaCwG{DiN}HqQyHgE_B_EyAe@Q}@]eKuDiAe@eA[qUiGeMkCcAQ"
75 },
76 {
77 "distance": 364.5,
78 "duration": 42.810590597840395,
79 "geometry": "mue|mAmfy~BuFuDsAq@sC{A{As@_LaEuKwD_JyC{LaFmLoF{KyFwHcEgIeEiFoCkGoEoYcTeB{AwEcF_BmB yAkBaAiCsAwDYsB"
80 },
81 {
82 "distance": 91.7,
83 "duration": 10.770181502940918,
84 "geometry": "qgk|mAcd}~BgRl@e_@nA"
85 },
86 {
87 "distance": 327.1,
88 "duration": 38.41795386708805,
89 "geometry": "_{l|mAe`}~Bb@iQrAgj@d@uRr@oYlDc|@\\yMt@uZlAuZJwC"
90 },
91 {
92 "distance": 211.7,
93 "duration": 24.864203098937757,
94 "geometry": "qil|mA_td_CFqBf@{F?eFzDu}ATgIHuINqH`@aM"
95 },
96 {
97 "distance": 171.3,
98 "duration": 20.11921582828549,
99 "geometry": "s_l|mA{qi_Cb`@e]tZkXdNoMfBuA"
100 },
101 {
102 "distance": 0,
103 "duration": 0,
104 "geometry": "kpi|mAszk_C"
105 }
106 ]
107 },
108 {
109 "distance": 4335.4,
110 "duration": 509.1935102273724,
111 "summary": "Avinguda Diagonal, Avenida Diagonal",
112 "steps": [
113 {
114 "distance": 47,
115 "duration": 5.520158458432095,
116 "geometry": "kpi|mAszk_CvI}GbJwI"
117 },
118 {
119 "distance": 44.2,
120 "duration": 5.191297954525503,
121 "geometry": "ozh|mAinl_C|@^p@L~@L|BUbCoBjA{CRqD?gA"
122 },
123 {
124 "distance": 55.5,
125 "duration": 6.518484988148538,
126 "geometry": "}ih|mAi}l_Ci@aBu@iBaAk@gBQu@?cCVkA|@_AxAi@dBM~ACnC"
127 },
128 {
129 "distance": 208.1,
130 "duration": 24.44138245105785,
131 "geometry": "i~h|mAmul_CwJtIiLpKeUbS{o@jl@"
132 },
133 {
134 "distance": 233.4,
135 "duration": 27.412872004213853,
136 "geometry": "m~k|mAu|i_CyG|FQzI?bDQ|CIvFOvCUnIuEf_BUzFEtAOdH"
137 },
138 {
139 "distance": 247.5,
140 "duration": 29.06891954174348,
141 "geometry": "}ql|mAytd_Cu@dTMfJi@jQaB|l@sBbu@iAt`@"
142 },
143 {
144 "distance": 367.3,
145 "duration": 43.13945110174699,
146 "geometry": "k~l|mAg|~~BmHlGgA~@u@^kA^gARaAHkBCmAU_Cq@{Aq@}A}@gBeA}AsA_CiCiByBqAiBgAqA}@yAi@} @aGuIwEiHg@y@yBkDyEiH{FwJiEoHcHsHkB}CeBuCwIoNsE}GqDmFmFyHcEaF}CoD"
147 },
148 {
149 "distance": 688,
150 "duration": 80.80572381704854,
151 "geometry": "syq|mAqoc_Cg@yC{FqGmEaGeEwFsJqM{AaCmByCqD_Hi@mAq@{AyBiG}@yC_A}Dc@}B}@sE_@aCy@o FgAoHmA}HkB}I_@oAQo@a@cAk@}AwAwBgFqGeCcCo@e@cAk@iAg@{CwA[QqCo@kDw@aAOkEo@sNaCuF_BmCqA{DsCm@ {@gBsB_@i@w@cBg@cAi@sA_AaDk@mC[oBiAkBsH{_@{D_SsC{Ni@gDUsAmGoYqK{i@[aBuAeFo@qBaAgBcAoA"
152 },
153 {
154 "distance": 274.2,
155 "duration": 32.20483934685278,
156 "geometry": "gvx|mAyro_C{@yDmC}NmC{D_CcNkEcWgAeGy@gD_AeGeAwF]uBu@wDOcAsCaOgF_Xi@mGoBmIwDcV"
157 },
158 {
159 "distance": 366.1,
160 "duration": 42.99851088578703,
161 "geometry": "emz|mAuqu_Co@iFm_@oaCiEmQmAsH{AqJYgBaDgT{AcIaEwX_CkU"
162 },
163 {
164 "distance": 805.1,
165 "duration": 94.55913989114212,
166 "geometry": "qm||mA{u}_C|DqZ^mMgJcl@uCiReUwyAeQ_z@gOg_AaAoFuB_MkEsVgCkQIg@SiAmA{GmFqZoE_WmB yKk@qDmRgmAoEmY"
167 },
168 {
169 "distance": 291,
170 "duration": 34.17800237029233,
171 "geometry": "so`}mA{po`CuB}M_BmKcHae@eBgL{AuJeMcx@k@eESwA_A}FwEuVwB}Kk@sD"
172 },
173 {
174 "distance": 407.6,
175 "duration": 47.8726933544026,
176 "geometry": "qcb}mAo_v`Cw@sF}DaX_FqXmJog@_BuIsBuMuAyIa@mCwIuk@oBaLU{A}AyJk@sDgCiPiAkH_DcScEyW"
177 },
178 {
179 "distance": 169.3,
180 "duration": 19.88431546835221,
181 "geometry": "_md}mAq`_aC`ZaK|WcJ|d@eQ"
182 },
183 {
184 "distance": 92.2,
185 "duration": 10.828906592924238,
186 "geometry": "asa}mA}i`aCs@_FeFi^wCg["
187 },
188 {
189 "distance": 39,
190 "duration": 4.580557018698973,
191 "geometry": "s`b}mAolbaCkQzN"
192 },
193 {
194 "distance": 0,
195 "duration": 0,
196 "geometry": "_sb}mAs|aaC"
197 }
198 ]
199 }
200 ],
201 "duration": 1070.3,
202 "distance": 9112.8
203 }
204 ]
205}
API 错误码
Response Code | Description | Additional Notes |
---|---|---|
200 | Normal success case. | Normal success case. |
400 | Input validation failed. | Such as missing parameter or parameter with invalid value type (for example value cannot be parsed into number). |
401 | APIKEY not supplied or invalid. | This error occurs when the wrong API key is passed in the request or the key is missing altogether |
403 | APIKEY is valid but does not have access to requested resources. | You might be querying for a geographical region which is not valid for your account, or requesting a service which is not enabled for you. |
404 | Requested host/path not found. | This error occurs when there is a malformed host name used. |
422 | Could not process the request. | There is an underlying map issue which prevents the processing of the request. |
429 | Too many requests. | QPM reached or API request count quota reached. |
500 | Internal Service error. | There was an internal issue with NextBillion.ai services. You can reach out to [email protected] for an explanation. |