静态贴图和多段线的Mapbox API请求

静态贴图和多段线的Mapbox API请求,api,mapbox,polyline,mapbox-static-maps,Api,Mapbox,Polyline,Mapbox Static Maps,我正在改写一个我之前问过的问题,希望它能给我一些反馈 我需要从Mapbox生成一个静态地图,显示两个端点以及它们之间的多段线路线。下面概述的方法就是我正在使用的方法。它有时起作用,有时不起作用——这就是让我发疯的原因 首先,我使用两个GPS端点发出生成多段线的API请求。然后,我使用第二个API请求,其中包含两个端点和多段线来生成静态映射。第一部分似乎总是有效的。我得到一条经过编码的多段线,可以通过在线解码工具运行,它可以很好地显示路径上的各个点,但是从Mapbox生成贴图的第二步有时会给我预期

我正在改写一个我之前问过的问题,希望它能给我一些反馈

我需要从Mapbox生成一个静态地图,显示两个端点以及它们之间的多段线路线。下面概述的方法就是我正在使用的方法。它有时起作用,有时不起作用——这就是让我发疯的原因

首先,我使用两个GPS端点发出生成多段线的API请求。然后,我使用第二个API请求,其中包含两个端点和多段线来生成静态映射。第一部分似乎总是有效的。我得到一条经过编码的多段线,可以通过在线解码工具运行,它可以很好地显示路径上的各个点,但是从Mapbox生成贴图的第二步有时会给我预期的贴图,有时会给我一个错误代码。代码通常是{“message”:“notfound”},但有时我会得到一个{“message”:“notauthorized-No Token”}错误代码

我使用此API和两个端点来获取具有多段线的JSON文件:

然后,获得多段线后,我将使用此API生成地图:

这个很好用

第1点=-87.321536,36.584454

第2点=-104.793676,38.749513

多段线=}kh~Ez{}sO|HUuHmj@uhHbOyAla@kisAdelC | aMf~w@egO|uaAahfBr{|@w_@sAozkCcwFsp@v]__w@
hjFjf@bdCkaJhmzAiyXtzb@fJ{p[| ~yertbdac{x^vkvHrZfuKo[tpBfxSrcuBocGpi_AqhCvjb@wgAvfsDhyc@fkrD~mD~bkDayD~ywCsui@vjmEoyBpk|AiOhHrvEdueApda@huoA|v[zuhFsySvwaAvbD
wqHxXpwDYj@riJULheEfXh^tdAj~I
^gI
hAkEY~@kHseBlGyC^kA

映射API请求=

地图(耶!)

这不管用

第1点=-87.321536,36.584454

第2点=-85.855218,37.690038

多段线=}kh~Ez{}sO|HUtCurC}xCkhC}~BqvIuc_@o~l@oaI}aUrs@kkL}~Iso\qHoyGsiKa
TpQcRdlGusK_DEiz@w^cwOakJurAizT{hCugF_bBenSs
OclZkdCw]mgEwyDogLgfBatEubCmkGxa@icLe_Do_Spf@cw]}sEgOaDgT{[zFyIk~Bts@

映射API请求=

无地图:-(


这是一个更大的项目的一小部分,我正在自动化生成项目报告的过程,但问题不在于我的jQuery/AJAX代码。问题在于我的API和/或Mapbox。如果有更好/更快/更简单的方法来获取这些映射,那么我绝对愿意接受建议,因为这似乎不是最简单的方法高效的方法。我将从计算机生成这些报告。我不担心手机应用程序的带宽或缩小规模。只要我每次都能一致地生成地图,该文件就可以变得很麻烦。

史蒂夫的评论暗示了正确的解决方案,但只是为了让它绝对清楚-第发生的原因是您没有正确编码请求中的路径多段线。尤其是多段线有一个讨厌的习惯,即包含保留字符,除非在请求时正确编码,否则这些字符将破坏URI

当我使用以下简单工具对路径覆盖的多段线部分进行编码时,我能够满足您的请求:



⚠️ 免责声明:我目前在Mapbox工作⚠️

你真的在API请求中对多段线进行URL编码吗?不清楚。我向Mapbox发出了两个API请求。第一个只使用坐标并返回编码的多段线。第二个使用第一个API中的坐标和多段线返回带有路线的地图。不幸的是,正如riastrad在下面指出的,该多段线包含使URL出错的特殊字符。一旦我清除了这些字符,它就解决了问题。谢谢你riastrad。这让我发疯已经好几个星期了。我正在编写自己的算法,手动将坐标转换为多段线。修复如此简单,我既高兴又难过。这解决了我的问题m、 我注意到,当我将api放入google时,它做了几处更改(即{到%7B),但我错误地认为,因为它做了一些更改,所以它正在进行所有需要的更改。谢谢你让我直截了当。你可以告诉你在Mapbox的朋友,他们可以忽略我发送给它的电子邮件。知道哪些字符有问题吗?例如,我没有看到任何
。可能是“\”?是的,Steve。后面的slash被改为正斜杠,tilda~和重音`以及其他一些字符都有问题。我正试图通过jQuery自动发出这些API请求。最终解决我的问题的是将变量与多段线一起使用,并使用这行代码删除所有不友好的字符…多段线line=encodeURIComponent(polyline);@SteveBennett是的,如果在发出请求之前不将其编码为
%5C
,则浏览器(可能还有其他客户端?)似乎会将其强制为一个“/”的“\”。如果只对该字符进行编码,则请求会按预期工作。
https://api.mapbox.com/styles/v1/mapbox/streets-v11/static/pin-s-a+9ed4bd(-87.321536,36.584454),pin-s-b+000(-85.855218,37.690038),path-5+f44-0.5(%7Dkh~Ez%7B%7DsO%7CHUtCurC%7DxCkhC%7D~BqvIuc_%40o~l%40oaI%7DaUrs%40kkL%7D~Iso%2FqHoyGsiKa%60TpQcRdlGusK_DEiz%40w%5EcwOakJurAizT%7BhCugF_bBenSs%60OclZkdCw%5DmgEwyDogLgfBatEubCmkGxa%40icLe_Do_Spf%40cw%5D%7DsEgOaDgT%7B%5BzFyIk~Bts%40)/auto/500x300?access_token=MAPBOX_ACCESS_TOKEN